.net Windows Xp和Windows 7中的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的程序主机(控制台主机) 配置文件(部分):.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的计算机上与远程队列(接收消息)连接并工作良好,但在运行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>