1

我的本地机器上有一个事务专用队列。如果队列未通过身份验证,则消息进入队列。如果我将队列设置为进行身份验证,则不会。发送到队列的应用程序正在以我自己的身份运行(并且我可以完全控制队列)。匿名用户还具有队列上的发送消息权限。我很困惑我需要做什么才能将消息发送到经过身份验证的队列。

这是我正在使用的绑定:

NetMsmqBinding msmq = new NetMsmqBinding(NetMsmqSecurityMode.None);
msmq.MaxReceivedMessageSize = int.MaxValue;
msmq.CloseTimeout = TimeSpan.FromMinutes(3);
msmq.SendTimeout = TimeSpan.FromMinutes(3);
msmq.ReceiveTimeout = TimeSpan.FromMinutes(3);
msmq.ReaderQuotas.MaxDepth = int.MaxValue;
msmq.ReaderQuotas.MaxStringContentLength = int.MaxValue;
msmq.ReaderQuotas.MaxArrayLength = int.MaxValue;
msmq.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
msmq.ReaderQuotas.MaxNameTableCharCount = int.MaxValue;
msmq.ExactlyOnce = true;
msmq.Durable = true;
msmq.TimeToLive = TimeSpan.FromHours(1);

理想情况下,我希望每个人(包括无法识别的用户)都能够发送消息,但限制谁可以偷看和接收消息。我不确定这是否可能。

那么,第一个问题:如何将消息放入经过身份验证的队列?


看起来我需要使用 of 打开传输安全msmqAuthenticationModeWindowsDomain。但是,当我这样做时,我收到以下错误:

Binding validation failed because the binding's MsmqAuthenticationMode property is set to WindowsDomain but MSMQ is installed with Active Directory integration disabled. The channel factory or service host cannot be opened.

看起来我的 MSMQ 是在 Workgroup mode 下安装的,而不是 Directory mode。我该如何解决?当我删除 MSMQ 然后将其添加回来(具有所有功能)时,它仍然不在目录模式下。我在win7。

4

2 回答 2

1

身份验证需要 Active Directory。MSMQ 检查发件人在 AD 中是否有证书。因此仅适用于域帐户。域帐户登录机器托管队列时创建的证书。

于 2012-11-03T21:04:59.317 回答
0

MSMQ 必须以目录模式安装,并且您必须设置msmq.Security.ModeTransport提供 WindowsDomain 凭据。要进入目录模式,您需要重新安装 MSMQ - 但请确保在重新安装之前删除计算机上的 msmq 对象

于 2012-11-21T16:15:15.067 回答