.net – 当使用“默认代理”时,用户名/密码来自何处?

“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;
点赞