我在不同的域中有代理和服务器。服务器充当MSMQ服务器,代理充当MSMQ客户端。我正在使用mqsender实用程序,它是MSMQ工具的一部分。
我的问题是,在使用HTTP://格式字符串时(MSMQ安装了HTTP支持),不会传递消息。使用OS:格式字符串工作正常。
使用HTTP时,消息会立即移动到Dead Letter队列,并且Class被设置为Unknown,所以我不知道这种行为的原因。
所以,这有效:
mqsender.exe /c:10 /j:dead /f:Direct=OS:il-mark-w2k3\private$\test
这不是:
mqsender.exe /c:10 /j:dead /f:Direct=http://il-mark-w2k3/msmq/private$/test
我检查了MSMQ虚拟目录是否存在。如何跟踪MSMQ操作以尝试了解正在发生的事情?
感谢。
修改
http://il-mark-w2k3/msmq/private$/test
会导致 501 - 标头值指定未实现的方法。导航到http://il-mark-w2k3/msmq
时收到相同的错误。我想这没关系,毕竟它不是 404 - Not Found ,对吗?EDIT2
我已成功解决了这个问题。 IIS缺少匿名身份验证,从观察其日志变得明显 - 401.2 HTTP错误就在那里。它启用后运行良好。问题仍然是为什么MSMQ在死信息上显示Class Unknown ?在其他机器上,相同的设置会产生错误:401 ,这更有意义。
答案 0 :(得分:3)
MSMQ的日志记录是内部的,因此如果不向Microsoft提出支持案例,您将无法轻易查看消息未能提供的确切原因。
我在solving various MSMQ/HTTP issues上发了几篇博文 标题为“使用HTTP的MSMQ消息不会被传递”的17可能有所帮助。
另请确保check the IIS logs for information。
干杯
John Breakwell