2012-11-01 29 views
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); 

理想情況下,我想對大家(包括不認識的用戶)能夠發送郵件,但限制誰可以窺視和接收消息。我不確定這是否可能。

所以,第一個問題:我怎樣才能得到一個消息到認證的隊列?


它看起來像我需要打開傳輸安全上的WindowsDomainmsmqAuthenticationMode。然而,當我這樣做,我得到以下錯誤:

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是installed in Workgroup mode, not Directory mode。我如何解決這個問題?當我刪除MSMQ然後將其添加回來(具有所有功能)時,它仍然不在目錄模式下。我在Win7上。

+0

對於目錄模式,您需要域控制器和域。如果您只有Windows 7計算機,則可以使用VirtualPC/VMware爲您的計算機創建Windows服務器以用作域控制器。 –

回答

1

身份驗證需要Active Directory。 MSMQ檢查發件人是否有AD中的證書。因此只適用於域帳戶。域帳戶登錄到計算機主機隊列時創建的證書。

+0

因此,我以域帳戶登錄我的機器。如果我像我一樣運行(VS中的F5),則不會有消息進入。如果我以用戶身份運行EXE(我自己,但現在使用顯式域登錄),但隊列中仍然沒有消息出現。我如何讓隊列接受消息? – zimdanen