407 требуемой Аутентификации - никакая отправленная проблема

В теории, и, пока Вы сохраняете m_SomeValue всегда равными SomeValue (как простой метод считывания/метод set), ничто. Кроме названия переменной, выставленной WCF. (Очевидно, если Вы отметите m_ переменная, то затем Ваш прокси-класс будет также иметь тот же m_ имя. Прокси-класс генерирует общественную собственность, используете ли Вы общедоступное/защищать/внутреннее/частное поле или свойство.

Однако, если у Вас есть какая-либо специальная логика в Ваших средствах доступа, которые могут изменить возвращенное значение (ToUpper() луг строка, например), затем Вы возвратили бы другое значение.

8
задан 10 revs, 2 users 100% 9 May 2010 в 21:40
поделиться

7 ответов

Если диск D является подключенным сетевым диском, вам может потребоваться использовать путь UNC:

8
ответ дан 5 December 2019 в 09:26
поделиться

У меня была аналогичная проблема, и я воспользовался советами из следующего сообщения в блоге, чтобы решить эту проблему:

http://blogs.msdn.com/jpsanders/archive/2009/03 /24/httpwebrequest-webexcepton-the-remote-server-returned-an-error-407-proxy-authentication-required.aspx

3
ответ дан 5 December 2019 в 09:26
поделиться

Можете ли вы попробовать установить для заголовка User-Agent в вашем HttpWebRequest то же значение, что и IE8?

Иногда серверы не будут правильно опрашивать, если пользовательский агент не тот они ожидают.

надеются, что это поможет.

0
ответ дан 5 December 2019 в 09:26
поделиться

Я написал утилиту для декодирования BLOB-объектов NTLM, которые были отправлены в сеансах IE и HttpWebRequest.

Когда я смотрю на HttpWebRequest и IE, они оба запрашивают 56-битное и 128-битное шифрование из сервер. Вот дамп сеанса с использованием HttpWebRequest

==== Type1 ----
Signature: NTLMSSP
Type: 1
Flags: E20882B7
NTLMSSP_NEGOTIATE_56
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP_NEGOTIATE_128
RESERVED2
RESERVED3
RESERVED4
NTLMSSP_REQUEST_NON_NT_SESSION_KEY
NTLMSSP_TARGET_TYPE_DOMAIN
NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED
NTLMSSP_NEGOTIATE_DATAGRAM
NTLMSSP_REQUEST_TARGET
NTLM_NEGOTIATE_OEM
NTLMSSP_NEGOTIATE_UNICODE)
Domain :
Workstation:
==== Type2 ----
Signature: NTLMSSP
Type: 2
Flags: 201
NTLMSSP_NEGOTIATE_56
NTLMSSP_REQUEST_NON_NT_SESSION_KEY)
Context: D32FDDCB:63507CFA

Вот дамп из IE:

==== Type1 ----
Signature: NTLMSSP
Type: 1
Flags: A208B207
NTLMSSP_NEGOTIATE_56
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP_NEGOTIATE_128
NTLMSSP_REQUEST_NON_NT_SESSION_KEY
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_TARGET_TYPE_SHARE
NTLMSSP_TARGET_TYPE_DOMAIN
NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED
NTLMSSP_NEGOTIATE_DATAGRAM
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_UNICODE)
Domain : XXXX.UK
Workstation: XXX-X31
==== Type2 ----
Signature: NTLMSSP
Type: 2
Flags: 201
NTLMSSP_NEGOTIATE_56
NTLMSSP_REQUEST_NON_NT_SESSION_KEY)
Context: D32FDDCB:63507CFA

В обоих IE / HttpWebRequest они запрашивают как 64-, так и 128-битную безопасность. Однако для windows7 128-битная безопасность NTLM была сделана по умолчанию, и без этого аутентификация не удастся. Как видно из ответа сервера, сервер поддерживает только 64-битное шифрование.

По следующей ссылке обсуждается аналогичная проблема, с которой столкнулся другой человек. http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/f68e8878-53e9-4208-b589-9dbedf851198

Причина, по которой IE работает вместо управляемого приложения, заключается в что IE на самом деле не запрашивает NTLMSSP_NEGOTIATE_SEAL | NTLMSSP_NEGOTIATE_SIGN, что требует шифрования. Однако HttpWebRequest запрашивает как SEAL | SIGN. Для этого требуется 128-битное шифрование, тогда как IE инициализирует NTLMSSP (без SEAL & SIGN), он не требует шифрования. Следовательно, IE работает, а HttpWebRequest - нет. (см. ссылку выше)

Я думаю, что если вы измените свою политику безопасности, чтобы разрешить 64-битное шифрование для NTLM, ваше приложение с управляемым кодом будет работать. Или, как вариант, попросите поставщика прокси-сервера поддержать 128-битное шифрование для NTLM.

Надеюсь, это поможет.

6
ответ дан 5 December 2019 в 09:26
поделиться

Это способ назначения прокси?

proxy.Credentials = CredentialCache.DefaultCredentials;

Когда я последний раз использовал прокси с HttpWebRequest, он был назначен следующим образом:

Назначить прокси для запроса:

request.Proxy.Credentials = Credentials.GetProxyCredentials();

Вызов метода:

    public static ICredentials GetProxyCredentials()
    {
        return new NetworkCredential(AppConstants.Proxy_username, AppConstants.Proxy_password);
    }

Настройте прокси-сервер в web.config

<system.net>
  <defaultProxy enabled="true">
    <proxy
      autoDetect="False"
      bypassonlocal="True"
      scriptLocation="http://www.proxy.pac"
      proxyaddress="http://proxy1.blah.com" />
  </defaultProxy>
</system.net>
0
ответ дан 5 December 2019 в 09:26
поделиться

Это может быть связано с тем, что находится в вашем «CredentialCache». Попробуйте вместо этого:

proxy.Credentials = new NetworkCredential("username", "pwd", "domain"); 
0
ответ дан 5 December 2019 в 09:26
поделиться

Как насчет этого:

        HttpWebRequest request = HttpWebRequest.Create("http://www.yahoo.com") as HttpWebRequest;
        WebProxy proxyObject = new System.Net.WebProxy("http://10.0.0.1:8080/", true); //whatever your proxy address is

        proxyObject.Credentials = CredentialCache.DefaultCredentials;
        request.Proxy = proxyObject;

        request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
        request.Accept = "*/*";

        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        Stream stream = response.GetResponseStream();
0
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: