при использовании «прокси по умолчанию» откуда берется имя пользователя / пароль? - PullRequest
4 голосов
/ 10 марта 2010

Класс "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;

    }
}

1 Ответ

2 голосов
/ 10 марта 2010

Учетные данные поступают из настроек вашей сети. Вы можете легко установить их вручную в коде, просто используйте класс WebProxy.

WebProxy proxy = new WebProxy("http://yourproxyserveraddress");
NetworkCredential cred = new NetworkCredential("user","password","domain");
proxy.Credentials = cred;
HttpWebRequest.DefaultWebProxy = proxy;
...