2013-05-30 1 views
2

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

У меня есть WsDualHttpBinding, чтобы вызвать услугу у клиента. Мой конфиг для клиента заключается в следующем:

<bindings> 
    <wsDualHttpBinding> 
    <binding name="wsDualHttpBindingConfiguration" closeTimeout="00:01:00" 
     openTimeout="00:01:00" receiveTimeout="00:05:00" bypassProxyOnLocal="true" /> 
    </wsDualHttpBinding> 
</bindings> 

мои клиенты определяются как это немного дальше:

<client> 
     <endpoint address="http://{ipadress}:60379/ConfigurationCompleterService.svc" 
      binding="wsDualHttpBinding" bindingConfiguration="wsDualHttpBindingConfiguration" 
      contract="InfluxConfigurationCompleterService.IConfigurationCompleterService" 
      name="WSDualHttpBinding_IConfigurationCompleterService"> 
      <identity> 
       <userPrincipalName value="{domain-username}" /> 
      </identity> 
     </endpoint> 
     <!--wsDualHttpBindingConfiguration--> 
     <endpoint address="http://{ipadress}:60379/ConfigurationImportService.svc" 
      binding="wsDualHttpBinding" bindingConfiguration="wsDualHttpBindingConfiguration" 
      contract="ConfigurationImportServiceReference.IConfigurationImportService" 
      name="WSDualHttpBinding_IConfigurationImportService"> 
      <identity> 
       <userPrincipalName value="{domain-username}" /> 
      </identity> 
     </endpoint> 
    </client> 

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

Необработанное исключение: System.ServiceModel.CommunicationException: согласование безопасности не удалось, поскольку удаленная сторона не отправила ответ своевременно. Это может быть связано с тем, что базовое транспортное соединение было прервано.

Я понимаю, что проблема связана либо с портом (но здесь я развернул его отдельно от 80) или вопросов безопасности.

Так я попытался вставить атрибуты безопасности в моей конфигурации связывания:

<security mode="none" />

<security mode="message"><message clientCredentialType="None"/></security> 

и другие, которые я не помню. Я не могу добраться до службы даже на том же компьютере, как только я развернул его, пока он работал нормально на VS2012.

Мои услуги хорошо организованы, я могу связаться с ними из веб-браузера и из удаленных машин.

Заранее спасибо.

PS: Можно ли каким-либо образом настроить WsDualHttpBinding абсолютно безопасным способом, который вообще не запрашивал бы никаких учетных данных?

ответ

0

У меня была такая же проблема, но это было из-за моего клиентского кода. Например:

WSDualHttpBinding binding = new WSDualHttpBinding(); 
binding.Security.Mode = WSDualHttpSecurityMode.None; <-- I forgot this line. 
EndpointAddress endpoint = new EndpointAddress("http://localhost/CardService.svc"); 
DuplexChannelFactory<ICardService> channelFactory = new DuplexChannelFactory<ICardService>(this, binding, endpoint); 
ICardService channel = channelFactory.CreateChannel(); 
string message = "Hello, service."; 
Console.WriteLine("Successfully created the channel. Pinging it with message \"{0}\".", message); 
channel.Ping(message); 
Console.WriteLine("Successfully pinged the channel.");