2014-12-25 3 views
0

WCF Дуплекс не работает под Azure. Все работает отлично под IIS Express. Я знаю, что привязка дуплекса проблематична из-за обратного вызова сервера, но .... Я уже отключил свой брандмауэр. TCPView (Sysinternals) показывает от 10 до 12 пакетов, отправленных/полученных клиентом, а затем он просто умирает ... ничего не происходит. Я установил на 10 минут все таймауты, которые мог.wsDualHttpBinding не работает при развертывании под Azure

См. Мои файлы конфигурации ниже.

SERVER CONFIG:

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="MexBehaviour" name="MySrvc"> 
    <endpoint address="" binding="wsDualHttpBinding" bindingConfiguration="wsDualHttpBinding" 
     name="wsDualEndpoint" bindingName="wsDualHttpBinding" contract="IMySrvc" /> 
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="mexHttpBinding" 
     name="MexEndpoint" bindingName="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://srvc.azurewebsites.net/MySrvc.svc" /> 
     </baseAddresses> 
     <timeouts openTimeout="00:10:00" /> 
    </host> 
    </service> 
</services> 
<bindings> 
    <wsDualHttpBinding> 
    <binding name="wsDualHttpBinding" openTimeout="00:10:00" sendTimeout="00:10:00" 
     clientBaseAddress="http://xxx.xxx.xxx.xxx:xxx"> 
     <security mode="None"> 
     <message clientCredentialType="None" negotiateServiceCredential="false" /> 
     </security> 
    </binding> 
    </wsDualHttpBinding> 
    <mexHttpBinding> 
    <binding name="mexHttpBinding" /> 
    </mexHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MexBehaviour"> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<protocolMapping> 
    <add binding="basicHttpsBinding" scheme="https" /> 
</protocolMapping>  
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 

КЛИЕНТ CONFIG:

<system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
      <binding name="wsDualEndpoint"> 
       <security mode="None" /> 
      </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://srvc.azurewebsites.net/MySrvc.svc" 
      binding="wsDualHttpBinding" bindingConfiguration="wsDualEndpoint" 
      contract="SrvcRef.IMySrvc" name="wsDualEndpoint" /> 
    </client> 
</system.serviceModel> 
+0

Возможная же проблема http://stackoverflow.com/questions/19922710/wcf-wsdualhttpbinding-binding-on-windows-azure-vm – dotnetstep

+0

На этом этапе я хотел бы спросить: кто-нибудь когда-либо имел службу WCF wsDualHttpBinding работая на удаленном хосте, таком как Azure? Я только что развернул свой КЛИЕНТ (а не службу, все еще на Azure) на машине EC2 в облаке AWS, чтобы убедиться, что проблема не в моей машине dev, и поведение точно такое же, но это просто не работает. ... Кто-нибудь когда-либо получал wsDualHttpBinding, фактически работающий на удаленном хосте? Пожалуйста, дайте мне знать. Это вопрос «ДА» или «НЕТ». Спасибо. – jsanalytics

ответ

1

Я знал, что это WSDualHttpBinding не прошел "тест запаха" .... От Юваль Книга Лоуи «Программирование WCF-сервисов: Освоение WCF и служебной шины Azure AppFabric»:

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

я решил мою проблему, просто используя NetTcpBinding вместо .... Вам просто нужно, чтобы получить IIS для работы с протоколом TCP. Там есть много статей, объясняющих, как это сделать. Адрес: http://msdn.microsoft.com/en-us/library/ms731053.aspx

Cheers.