0

Azure で WCF Duplex が機能しない。IIS Express ではすべて正常に動作します。サーバーのコールバックが原因で二重バインディングに問題があることはわかっていますが.... ファイアウォールは既にシャットダウンしています。TCPView (Sysinternals) は、10 ~ 12 個のパケットがクライアントによって送受信されていることを示しており、その後ただ死んでいます... 何も起こりません。可能なすべてのタイムアウトを10分に設定しました。

以下の私の設定ファイルを見てください。

サーバー構成:

  <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" />

クライアント構成:

    <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>
4

1 に答える 1

1

私は、このwsDualHttpBindingが「臭いテスト」に合格しないことを知っていました.... Juval Lowy の本「WCF サービスのプログラミング: WCF と Azure AppFabric サービス バスのマスター」から:

...サービスをクライアントから分離するさまざまな通信バリアをトンネリングすることは事実上不可能であり、特定の Web サーバー マシンを見つける必要があるため、これは非現実的であるため、 WSDualHttpBindingはほとんど使用できません。

代わりにnetTcpBindingを使用するだけで問題を解決しました....IISをTCPプロトコルで動作させるだけです。それを行う方法を説明する記事はたくさんあります。これが1つです: http://msdn.microsoft.com/en-us/library/ms731053.aspx

乾杯。

于 2014-12-30T01:11:58.880 に答える