Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 发送到经过身份验证的队列_Wcf_Msmq - Fatal编程技术网

Wcf 发送到经过身份验证的队列

Wcf 发送到经过身份验证的队列,wcf,msmq,Wcf,Msmq,我在本地计算机上有一个事务专用队列。如果队列未经过身份验证,则消息将进入队列。如果我将队列设置为经过身份验证,则不会。发送到队列的应用程序正在以我自己的身份运行(我完全控制队列)。匿名用户还具有对队列的发送消息权限。我不知道我需要做什么才能将消息发送到经过身份验证的队列 以下是我正在使用的绑定: NetMsmqBinding msmq = new NetMsmqBinding(NetMsmqSecurityMode.None); msmq.MaxReceivedMessageSize = int

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

以下是我正在使用的绑定:

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);
理想情况下,我希望每个人(包括未识别的用户)都能够发送消息,但限制谁可以偷看和接收消息。我不确定这是否可行

因此,第一个问题是:如何将消息放入经过身份验证的队列


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

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是。我该如何解决这个问题?当我删除MSMQ,然后将其添加回(具有所有功能)时,它仍然不处于目录模式。我在Win7上。

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

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

MSMQ必须是,并且您必须将
MSMQ.Security.Mode
设置为
Transport
以提供WindowsDomain凭据。要进入目录模式,您需要重新安装MSMQ,但在重新安装之前请确保重新安装。

必须安装MSMQ,并且您必须将
MSMQ.Security.mode
设置为
传输
,以提供WindowsDomain凭据。要进入目录模式,您需要重新安装MSMQ,但请确保在重新安装之前重新安装。

因此,我以域帐户的身份登录到我的计算机。如果我像自己一样运行(VS中的F5),则不会有消息进入。如果我以用户身份运行EXE(我自己,但现在使用显式域登录),队列中仍然不会显示任何消息。如何使队列接受消息?因此,我作为域帐户登录到我的计算机。如果我像自己一样运行(VS中的F5),则不会有消息进入。如果我以用户身份运行EXE(我自己,但现在使用显式域登录),队列中仍然不会显示任何消息。如何使队列接受消息?对于目录模式,您需要域控制器和域。如果您只有一台Windows 7计算机,则可以使用VirtualPC/VMware为您的计算机创建一台Windows服务器,以用作域控制器。对于目录模式,您需要一个域控制器和一个域。如果您只有一台Windows 7计算机,则可以使用VirtualPC/VMware为您的计算机创建一台Windows服务器,以用作域控制器。