无法在 Windows 2012 MSMQ 中连接 Winsoc 套接字

Posted

技术标签:

【中文标题】无法在 Windows 2012 MSMQ 中连接 Winsoc 套接字【英文标题】:Failed to connect Winsoc socket in Windows 2012 MSMQ 【发布时间】:2015-02-27 15:24:26 【问题描述】:

我有一个网站使用企业库使用 MSMQ 跟踪侦听器进行日志记录。站点正在创建日志。日志位于 MSMQ 传出队列中。但是,队列不会被发送到远程计算机。我收到的消息是“无法连接 Winsock 套接字。地址:IP=xx.xx.xx.xx” 状态处于“等待连接”。我的队列路径为 queuePath="FormatName:DIRECT=OS:computername\Private$\private queuename"。

我错过了什么吗?可能是防火墙规则?当我查看目标计算机中的防火墙规则时,它允许所有端口的 MSMQ 入站 TCP/UDP。

【问题讨论】:

在防火墙中启用远程事件监视器 (RPC-EPMAP) 入站规则解决了我遇到的问题。现在传出队列说它已连接到远程计算机。但是,我在专用队列下的远程计算机中看不到任何队列。我也没有在源计算机的传出队列中看到队列,这意味着队列正在发送但未登录到目标计算机的队列中。看起来仍然缺少在目标文件夹中设置一些规则。 我添加这个是因为它可能会帮助那里的人并节省时间。现在也解决了目标计算机不接收的私有队列。这是权限问题。我必须将接收消息权限授予两个用户——“所有人”和“匿名登录”。添加这两个用户后,我的目标计算机开始接收私人队列消息。要添加权限,请右键单击您创建的专用队列名称。转到安全选项卡,添加用户。 【参考方案1】:

在防火墙中启用远程事件监视器 (RPC-EPMAP) 入站规则解决了我遇到的问题。现在状态是 Connected 并且 Connection History 是 Connection is ready to transfer messages。

【讨论】:

【参考方案2】:

还要补充一点,我发现需要打开允许传入流量的 msmq 端口的 1801 端口。

https://support.microsoft.com/en-us/help/183293/how-to-configure-a-firewall-for-msmq-access

【讨论】:

以上是关于无法在 Windows 2012 MSMQ 中连接 Winsoc 套接字的主要内容,如果未能解决你的问题,请参考以下文章

无法启动net.msmq listener adapter服务是怎么解决

C# 中的 MSMQ COM API

编写 MSMQ 示例应用程序所需的最低限度

如何成功发布一个MSMQ的Windows服务

MSMQ 无法删除或清除队列

如何在C#中使用MSMQ