.net Windows Xp和Windows 7中的MSMQ、WCF和远程队列

.net Windows Xp和Windows 7中的MSMQ、WCF和远程队列,.net,wcf,msmq,.net,Wcf,Msmq,为什么此控制台程序(WCF主机)在Windows XP计算机上与远程队列(MSMQ)一起正常工作,但在Windows 7上不工作? (.net Framework 4.5(4.0相同情况)) Windows Server 2003 R2上的MSMQ远程专用队列(包含消息)。 一个测试客户端-Windows XP Prof。 第二个测试客户端Windows7教授。 两台机器上的配置文件相同 在所有计算机上安装并启动MSMQ 我有一个用于WCF的程序主机(控制台主机) 配置文件(部分):

为什么此控制台程序(WCF主机)在Windows XP计算机上与远程队列(MSMQ)一起正常工作,但在Windows 7上不工作? (.net Framework 4.5(4.0相同情况))

Windows Server 2003 R2上的MSMQ远程专用队列(包含消息)。 一个测试客户端-Windows XP Prof。 第二个测试客户端Windows7教授。 两台机器上的配置文件相同

在所有计算机上安装并启动MSMQ

我有一个用于WCF的程序主机(控制台主机)

配置文件(部分):








<行为>



问题:为什么此控制台程序(WCF主机)在运行操作系统Windows XP的计算机上与远程队列(接收消息)连接并工作良好,但在运行Windows 7的计算机上不工作

在Windows 7计算机上,我有下一个异常(host.Open();):

System.InvalidOperationException HResult=-2146233079 Message=绑定验证失败,因为端点侦听URI不表示MSMQ直接格式名称。无法打开服务主机。确保为端点的侦听URI使用直接格式名称。Source=System.ServiceModel


谷歌搜索揭示了这一点:

这似乎意味着,如果承载端点的服务器运行的MSMQ版本低于您的客户机,则会出现此错误

在您的案例中,服务器是win2003 server,将运行MSMQ 3.0,客户端是win7,将运行MSMQ 5.0()


因此,您只需要在服务和客户端使用相同或更多“类似”版本的MSMQ。

谢谢您的回复,休(谢谢您的更正,约翰·桑德斯)。但在我看来,这是另一种方式。我会看得更远-(.您解决了吗?没有,我没有解决问题:-(您是否发现客户端和服务器上的msmq版本不匹配?
 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>