WCF:“ System.ServiceModel.Channels.ClientReliableDuplexSessionChannel”を開けませんでした

StackOverflow https://stackoverflow.com/questions/819871

質問

現在、コールバックコントラクト(二重)を使用したWCFサービスがあり、コンピューターでそれを使用するアプリケーションを使用するとすべて正常に動作しますが、別のコンピューターから試しても接続されません。

wsHttpBinding を使用するとすべてが正常に機能したため、この wsDualHttpBinding (コールバック用)に切り替えると、これらの問題が発生し始めました。

Webサービスが他のコンピューターからの要求を受け入れないのはなぜですか?変更が必要なホスティング設定はありますか?


ログに関しては、これらを取得しています:

代替テキストhttp://img17.imageshack.us/img17/4628/wcfissue .jpg

  

オープン操作は完了しませんでした   割り当てられたタイムアウト内   00:01:00。これに割り当てられた時間   操作はの一部だったかもしれません   より長いタイムアウト

     

System.ServiceModel.Channels.ClientReliableDuplexSessionChannelを開けませんでした

     

障害   System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

     

障害   System.ServiceModel.Channels.ServiceChannel

     

開けなかった   System.ServiceModel.Channels.ServiceChannel


ポートはルーター(TCPとUDPの両方)で開いているため、問題はありません。

サービス属性に関しては、これが私が使用しているものです:

インターフェース:

[ServiceContract(Name = "MusicRepo_DBAccess_Service", 
                 CallbackContract = typeof(IOnlineUsersCallback),
                 SessionMode=SessionMode.Required)]

サービス:

[ServiceBehavior(
        ConcurrencyMode=ConcurrencyMode.Reentrant, 
        InstanceContextMode=InstanceContextMode.Single)]

[更新]

Orion Edwards 'に関して投稿:

  • ファイアウォールなし
  • ポイント1を参照
  • はい、できます。ルーターでポートを転送しているからです
  • IISを使用してサーバーをホストしています。

問題は、 wsHttpBinding (正常に機能していた)から wsDualHttpBinding (コールバックが必要なため)に切り替えたときにこの問題が発生し始めたことです。


[更新]

wsDualHttpBinding から NetTcpBinding に切り替えました。何らかの理由で、すべてが正常に機能しています。

この記事を使用して、IISでのホスティングを設定しました。ありがたいことに、コールバックを使用して、すべてが期待どおりに機能しています。

役に立ちましたか?

解決

wsDualHttpBinding から NetTcpBinding に切り替えました。何らかの理由で、すべてが正常に機能しています。

この記事を使用して、IISでのホスティングを設定しました。ありがたいことに、コールバックを使用して、すべてが期待どおりに機能しています。

他のヒント

サーバーとクライアントの構成設定を投稿すると役立ちます。

MSDN からwsDualHttpBindingがどのように機能するかの概要を次に示します(私を強調する):

  

WSDualHttpBindingは、   Webサービスプロトコルの同じサポート   WSHttpBindingとして、ただしで使用するため   二重契約。 WSDualHttpBinding   SOAPセキュリティのみをサポートし、   信頼できるメッセージングが必要です。 これ   バインディングには、クライアントが   コールバックを提供するパブリックURI   サービスのエンドポイント。これは   clientBaseAddressによって提供されます   属性。デュアルバインディングは、   クライアントのIPアドレス   サービス。クライアントは使用する必要があります   それだけを保証するセキュリティ   信頼するサービスに接続します。

     

このバインディングを使用して、   1つまたは   より多くのSOAP仲介者。

     

デフォルトでは、このバインディングは   ランタイムスタック   信頼性のためのWS-ReliableMessaging   メッセージセキュリティのためのWS-Securityおよび   認証、メッセージのHTTP   配信、およびテキスト/ XMLメッセージ   エンコード。

確認事項:

  • Windowsファイアウォール
  • ウイルス対策製品のファイアウォール
  • リモートマシンからポートにtelnetできますか?
  • あなたの「サーバー」はASP.NET開発サーバーで実行していますか? localhostからのリクエストのみを受け付けます- ServiceHost を使用してサーバーをセルフホストするか、IISでホストする必要があります。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top