2015-02-17 2 views
3

Я размещаю веб-сервис WCF (на Azure) и отправил настольное приложение WPF клиенту, который (очевидно) пытается получить доступ к службе через прокси.Возврат вызова службы WCF «Требуется 407 аутентификация прокси»

вызовы служб, после которого возвращается

Удаленный сервер возвратил неожиданный ответ: 407 Proxy Authentication Обязательный

ServiceModel раздел файла клиента app.config выглядит следующим образом:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_ILicensing" closeTimeout="00:00:15" openTimeout="00:00:15" 
       receiveTimeout="00:00:15" sendTimeout="00:00:15" maxReceivedMessageSize="2147483647" 
       maxBufferSize="2147483647"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647"/> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="xxxxxxx" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ILicensing" 
       contract="Cloud.ILicensing" name="BasicHttpBinding_ILicensing" /> 
    </client> 
</system.serviceModel> 

Это в основном все, что я знаю.

Я бы хотел как-то исправить это поведение, изменив файл app.config и/или файл web.config службы (что не имеет значения, поскольку служба не достигнута).

Насколько я понял, есть атрибут useDefaultWebProxy узла привязки, который запрашивает конфигурацию прокси-сервера системы и использует его для подключения к службе. Однако, поскольку значение по умолчанию равно true, я бы ожидал, что установка его на true явно ничего не меняет (это, по-моему, определение по умолчанию).

  1. Что может быть причинами для аутентификации прокси неисправной, учитывая useDefaultWebProxy не установлен, и для этого должно быть true из-за его значения по умолчанию?

  2. Как можно изменить app.config, чтобы исправить проблему с учетом ограниченной информации? В основном: что мне нужно знать/спросить у моего клиента (т. Е. Адрес прокси-сервера) и где мне нужно вставить информацию в файл конфигурации клиента?

  3. Как настроить тестовую среду на моей локальной машине, которая имитирует проблему?

ответ

5

Для и , вам нужно настроить System.Net предоставить учетные данные по умолчанию для прокси-сервера по умолчанию - это не делает это по умолчанию (так как скрытый код обратного вызова в приложениях с автоматическим доступом к интернет был бы плохим).

<system.net> 
    <defaultProxy useDefaultCredentials="true" /> 
</system.net> 

Для , я не совсем уверен, как вы могли бы проверить это локально, как вам нужна машина, чтобы действовать в качестве прокси-сервера, и они, как правило, машины типа контроллера домена. Вы могли бы имитировать с помощью двух виртуальных машин, но я надеюсь, что у вас есть мощная машина, чтобы сделать это, и кажется, что это требует больших усилий, чтобы проверить это.

+0

Спасибо вам большое, что это своего рода ответ, который я надеялся, так как это просто исправить и ясное объяснение того, что это не так! Я постараюсь дать вам определенную информацию, если это сработает. На 3, большое спасибо, тоже, хотя я надеюсь, что мне это не нужно. – Marc

+0

Нет проблем. :) Пожалуйста, не забывайте отмечать это как ответ, если он решает вашу проблему. – toadflakz

+0

Конечно, я буду :) – Marc

1

Вы можете сделать это из кода

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials; 
Смежные вопросы