5

“WebClient”类(也包括 ClickOnce)可以使用默认代理设置(例如放入 application.config),但是:

  1. 用户名/密码从何而来?(我在 XML 配置中看不到设置 - 见下文)。
  2. 应用程序是否可以配置为手动提示用户输入用户名/密码

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;

    }
}
4

2 回答 2

2

凭据来自您的网络设置。您可以轻松地在代码中手动设置它们,只需使用 WebProxy 类。

WebProxy proxy = new WebProxy("http://yourproxyserveraddress");
NetworkCredential cred = new NetworkCredential("user","password","domain");
proxy.Credentials = cred;
HttpWebRequest.DefaultWebProxy = proxy;
于 2010-03-10T02:53:10.917 回答
0

如果您不添加任何NetworkCredential,则凭据来自应用程序池中设置的身份。

打开 IIS 管理器 --> 应用程序池

情况1:

如果您的 Web 应用程序位于其身份为内置帐户的应用程序池下,即 ApplicationPoolIdentity:

--> 这将使用IIS APPPOOL\MEILIAPPPOOL帐户。

案例二:

您可以使用一些服务帐户设置应用程序池,如下所示:

--> 这将使用DOMAIN\SERVICEACCOUNTUSERNAME帐户。

于 2022-02-25T17:24:58.757 回答