8

这让我有点发疯,所以如果有人能帮忙,我将非常感激!

我正在尝试将消息从域内的服务器发送到公共队列到域控制器,但出现错误:

'工作组安装计算机不支持该操作。'

我已经在 Domain COntroller 上设置了 MSMQ,并在 Public Queues 文件夹中创建了一个消息队列。

我知道之前有人问过类似的问题:

为什么 MSMQ 认为我在工作组计算机上?

但我已经尝试了所有建议的方法,但我仍然遇到同样的错误。

因此,带您了解我从建议中尝试过的内容:

a) 没有选择 AD 集成作为设置选项 - 安装 msmq 时选择了此选项

b) 选择了 AD 集成但未能初始化;检查事件日志 - 我检查了我的事件日志并且我收到消息 - 包的可选更新 MSMQ-ADIntegration MSMQ 服务器包已成功打开。

c) 检查 Active Directory 中的孤立对象 - 我检查了 Active Directory 用户和计算机中的 LostAndFound 目录以检查 AD 中没有孤立对象

我已按照以下说明操作: http ://technet.microsoft.com/en-us/library/cc730960.aspx

我还卸载了重新启动并重新安装并再次检查我没有任何孤立对象。

发送消息的所有服务器都需要安装 msmq 吗?目前我只在域控制器上拥有它,我认为这已经足够了。

编辑 1:我已将 msmq 添加到所有发送消息的服务器(它们是负载平衡的,因此可以是其中任何一个),它们已经安装了 msmq,但没有公共队列,所以我重新安装并再次安装(选择时选中所有适当的框msmq -Directory 服务集成/路由服务等。他们现在有公共队列我现在收到一个新错误,如下所示:

'用户的内部消息队列证书不存在。'

编辑2:

我仍在努力,但已经取得了一些进展——当我检查我的域控制器的证书颁发机构时,它就在那里,但是当我查看 IIS 时,它缺少虚拟目录 CertServ——请参阅链接以获取解释:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms755466%28v=vs.85%29.aspx

一旦我解决了这个问题,我将为我的每台服务器申请一个计算机证书,如下所示:

http://technet.microsoft.com/en-us/library/cc740173%28v=ws.10%29.aspx

希望这会奏效!

编辑 3:好的,由于互联网垃圾的原因,我无法申请证书,但希望这将在接下来的几天内得到纠正。所以我尝试了自我认证,但没有产生任何影响并取消了 UseAuthentication = true, UseEncryption = true 并取消选中已验证的框并将加密设置为可选。我不再收到一条错误消息,这让我相信身份验证有问题(与 Active Directory 相关)但是即使它没有失败,因为没有显示错误消息并且我希望显示的页面在我的网站上显示。我的域控制器公共队列消息中没有消息...

当我尝试在导致问题的域内执行此操作时,我已在本地执行此操作。

编辑4:

只是为了让您知道我在这方面的进展 - 我想确保消息被发送到域控制器,所以我查看了 MSMQ End2End 监控 - 所以在每个 Web 服务器上(消息发送自)和事件查看器>应用程序和服务日志> Microsift> Windows>MSMQ>End2End中的域控制器(消息发送到)我启用了日志记录。

当我尝试在 Web 服务器上再次发送消息时,记录了 2 个 End2End 事件:

  1. ID 为 CN=msmq,CN=ETAILWEB03,CN=Computers,DC=Etail,DC=local\7 的消息已发送到队列 PUBLIC=d7ee680c-11ec-4d9a-aa31-528dcc9b1eba

  2. 通过网络发送的消息

在 End2End 事件中的域控制器上:

  1. 消息来自网络

所以从这里看来消息已经到达所以我现在正在寻找消息丢失的位置:

https://groups.google.com/forum/?fromgroups=#!topic/microsoft.public.msmq.networking/88FYCvO2YwQ

编辑5:

好的,如下:

MSMQ 消息已收到但未送达 Windows 2008 R2

我添加了一个匿名用户,并且能够向队列中添加一条消息,这很好,但我现在需要退后一步,只让用户完全控制应该接收消息的用户 - 那么网络服务器的用户名是什么以及为了安全起见,我需要对消息进行身份验证,所以回到我之前的问题之一。

编辑6:

仍在为此苦苦挣扎,但走得更远了……

在域控制器(证书颁发机构和接收 MSMQ 所在的位置)上配置了证书自动注册,我在 Web 服务器(发送消息)上运行以下命令 - 运行 - gpupdate /force 并重新启动每个 Web 服务器。

我确保在所有 Web 服务器上都检查了身份验证并在消息队列属性中选择了正文。我还更新了所有 Web 服务器上的证书以确保它们是最新的我现在收到以下错误:

队列路径名无效。

我查看了以下链接:

http://blogs.msdn.com/b/johnbreakwell/archive/2010/03/24/understanding-how-msmq-security-blocks-rpc-traffic.aspx

编辑 7:

好的,因此要尝试使其正常工作,似乎无法识别 Web 应用程序用户,因此在 Web 服务器上我转到 IIS > 应用程序池 > 高级设置 > 身份并将身份设置为网络服务。完成此操作后,我在运行应用程序时不再收到错误消息,但该消息似乎不在我期望的公共队列中,因此我现在将再次查看 end2end 以查看是否可以找到它去了哪里。

使固定

一旦 IIS 设置为网络服务,我会再次检查正在发送的消息是否经过身份验证,并且接收消息的域控制器是否经过身份验证检查。我为我的公共队列中的每个人提供了完全访问权限,并且成功了!

老实说,在此过程中进行了很多试验和错误,但希望这篇文章对其他人有所帮助 - 感谢 john B,我读过的关于这个主题的大部分内容都是由他以一种或另一种形式发布的!

4

1 回答 1

0

'用户的内部消息队列证书不存在。'

以交互方式登录到将发送消息的每个服务器。
使用运行发送应用程序的用户帐户。
这将为该帐户创建证书,每台机器一个。

于 2012-09-19T23:44:40.770 回答