【问题标题】:MSMQ, WCF and remote queue in Windows Xp and Windows 7Windows Xp 和 Windows 7 中的 MSMQ、WCF 和远程队列
【发布时间】:2013-09-05 16:33:40
【问题描述】:

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

Windows Server 2003 R2 上的 MSMQ 远程专用队列(带有消息)。 一个测试客户端 - Windows XP Prof. 第二个测试客户端 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 使用直接格式名称。 Source=System.ServiceModel

【问题讨论】:

  • 你解决了吗?
  • 不,我还没有解决问题:-(
  • 您是否发现客户端和服务器上的 msmq 版本不匹配?

标签: .net wcf msmq


【解决方案1】:

通过谷歌搜索发现了这一点:

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

这似乎是说,如果托管端点的服务器运行的 MSMQ 版本不低于您的客户端。

在您的情况下,服务器是 win2003 服务器,它将运行 MSMQ 3.0,客户端是 win7,它将运行 MSMQ 5.0 (see here for version table)。

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

【讨论】:

  • 感谢您的回复,休(并感谢您的纠正,约翰桑德斯)。但在我看来,这是另一种方式。我会进一步看。 :-(。
猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 2021-04-26
  • 2011-12-23
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 2011-03-08
  • 2021-12-04
相关资源
最近更新 更多