1

このコンソール プログラム (WCF ホスト) が Windows XP コンピューターのリモート キュー (MSMQ) で正常に動作するのに、Windows 7 では動作しないのはなぜですか? (.net Framework 4.5(4.0同状況))

Windows Server 2003 R2 上の MSMQ リモート プライベート キュー (メッセージ付き)。1 つのテスト クライアント - Windows XP Prof. 2 つ目のテスト クライアント Windows 7 Prof. 両方のマシンで同一の構成ファイル。

MSMQ がすべてのマシンにインストールされ、開始されました。

WCF 用のプログラム ホスト (コンソール ホスト) があります。

 var host = new System.ServiceModel.ServiceHost (typeof (TestMessageReceiver ));
    host.Faulted += HostFaulted;
    host.Open();

設定ファイル(一部):

<system.serviceModel>
    < services>
      < service behaviorConfiguration =" myBehavior" name="TestMSMQwin7.TestMessageReceiver" >
        < endpoint address="net.msmq://zzz.zzz.zzz.com/private/rbcmessagestest"
                   binding="netMsmqBinding"
                   bindingConfiguration="ReceiverMSMQconfig"
                   contract="RBC.Receiver.ContractInterfaces.IMessageReceiver" />
        < host>
          < baseAddresses>
            < add baseAddress="http://xxx.xxx.xxx.com:8089/MessageReceiver" />
          </ baseAddresses>
        </ host>
      </ service>
    </ services>
    < behaviors>
<!--...-->
    </ behaviors>
    < bindings>
      < netMsmqBinding>
        < binding name =" ReceiverMSMQconfig" maxReceivedMessageSize="5242880"   maxBufferPoolSize="5242880"  >
          < readerQuotas maxDepth =" 32" maxStringContentLength= "5242880 "   maxArrayLength="16384" maxBytesPerRead =" 4096" maxNameTableCharCount= "16384 "/>
          < security mode =" None" />
        </ binding>
      </ netMsmqBinding>
    </ bindings>
  </system.serviceModel>

質問:なぜこのコンソール プログラム (WCF ホスト) は、OS Windows XP を実行しているコンピューターではリモート キュー (メッセージの受信) に接続してうまく機能するのに、Windows 7 を実行しているコンピューターでは機能しないのですか?

Windows 7 コンピューターでは、次の例外があります (host.Open();):

System.InvalidOperationException HResult=-2146233079 Message= エンドポイントのリッスン URI が MSMQ 直接形式名を表していないため、バインドの検証に失敗しました。サービス ホストを開くことができません。エンドポイントのリッスン URI には、必ず直接形式の名前を使用してください。ソース=System.ServiceModel

4

1 に答える 1

0

少しグーグルでこれを明らかにしました:

http://rabblerule.blogspot.co.uk/2010/08/more.html

エンドポイントをホストしているサーバーがクライアントよりも低いバージョンの MSMQ を実行していない場合、このエラーが発生するようです。

あなたの場合、サーバーはMSMQ 3.0を実行するwin2003サーバーであり、クライアントはMSMQ 5.0を実行するwin7です(バージョンテーブルについてはこちらを参照してください)。

したがって、サービスおよびクライアント エンドには、MSMQ と同じか、より「類似した」バージョンを使用する必要があります。

于 2013-09-05T20:12:12.157 に答える