“WebClient”类(以及ClickOnce也可以)使用默认代理设置(例如,放入application.config),但是:
>用户名/密码来自哪里? (我在XML配置中看不到设置 – 见下文).
>可以将应用程序配置为手动提示用户输入用户名/密码
http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx
<defaultProxy
enabled="true|false"
useDefaultCredentials="true|false"
<bypasslist> … </bypasslist>
<proxy> … </proxy>
<module> … </module>
/>
PS.我刚刚使用以下设置进行测试,并确认用户名/密码不是来自成功登录的IE会话.
因此,突出的问题是用户名/密码来自哪里?或者它是否必须在自定义应用程序中以编程方式提供,在这种情况下,ClickOnce会发生什么? (似乎没有启动任何允许用户提供用户名/密码的对话框)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="false">
<bypasslist>
<add address="localhost" />
</bypasslist>
<proxy usesystemdefault="True" proxyaddress="http://proxy1.health.qld.gov.au:80/" bypassonlocal="False" />
</defaultProxy>
</system.net>
</configuration>
private void button2_Click(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
try
{
var wc = new WebClient();
var str = wc.DownloadString(textBox1.Text);
MessageBox.Show("String = " + str);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
最佳答案 凭据来自您的网络设置.您可以在代码中手动设置它们,只需使用WebProxy类.
WebProxy proxy = new WebProxy("http://yourproxyserveraddress");
NetworkCredential cred = new NetworkCredential("user","password","domain");
proxy.Credentials = cred;
HttpWebRequest.DefaultWebProxy = proxy;