簡體   English   中英

WCF - 在新環境中找不到MSMQ端點

[英]WCF - MSMQ endpoint not found in new environment

設置

我在Windows Server 2012R2上運行的IIS / AppFabric中托管了WCF服務。 該服務通過netMsmqBinding綁定到本地事務MSMQ隊列。 我的操作使用TransactionScopeRequired = true進行修飾。 服務操作接收來自BizTalk服務器的調用,處理它們並將響應發送回遠程隊列(在同一BizTalk Server上),也通過netMsmqBinding。

 <endpoint name="Outbound" address="net.msmq://int01test.mydomain.com/private/queue.name" binding="netMsmqBinding" bindingConfiguration="QueueBindingConfigurationOutbound" contract="My.Outbound.Contract" /> <netMsmqBinding> <binding name="QueueBindingConfigurationOutbound"> <security> <transport msmqAuthenticationMode="WindowsDomain" msmqProtectionLevel="Sign" /> </security> </binding> </netMsmqBinding> 

在測試環境中,這可以按預期工作。

測試環境中的物理設置:服務器int01test.mydomain.com托管BizTalk服務器和我的入站隊列。 這在服務帳戶mydomain \\ inttestuser下運行。 服務器app01test.mydomain.com托管我的應用程序(IIS / AppFabric),我的數據庫(SQL服務器)和我的出站隊列。 這在服務帳戶mydomain \\ apptestuser下運行。

問題

當此解決方案升級到驗收測試環境時,仍會處理調用,但響應將被阻止並顯示錯誤消息:

System.ServiceModel.EndpointNotFoundException:打開隊列時發生錯誤:無法識別的錯誤-1072824317(0xc00e0003)。 無法從隊列中發送或接收消息。 確保已安裝並運行MSMQ。 還要確保可以使用所需的訪問模式和授權打開隊列。 ---> System.ServiceModel.MsmqException:打開隊列時發生錯誤:無法識別的錯誤-1072824317(0xc00e0003)。 無法從隊列中發送或接收消息。 確保已安裝並運行MSMQ。 還要確保可以使用所需的訪問模式和授權打開隊列。

差異

在測試環境中,我的服務和我的數據庫在單個服務器實例上運行。 (BizTalk Server及其隊列,我的出站消息的目標,但是在另一台服務器上)在驗收測試環境中,我的解決方案部署在兩個負載平衡的服務器上,數據庫位於一個單獨的集群上。 還有更嚴格的外部防火牆規則來模仿生產環境。 即使BizTalk服務器是集群的,但我們現在正在進行機器到機器而不是集群到集群的通信。

因此,QA環境中的設置是:服務器int01qa.mydomain.com(與int02qa.mydomain.com集群)托管BizTalk服務器和我的入站隊列。 這在服務帳戶mydomain \\ intqauser下運行。 服務器app01qa.mydomain.com(與app02qa.mydomain.com集群)托管我的應用程序(IIS / AppFabric)和我的出站隊列。 這在服務帳戶mydomain \\ appqauser下運行。 服務器db01qa.mydomain.com托管我的數據庫。

我們已經嘗試過的

  • 我們已禁用遠程隊列上的身份驗證。
  • 我們已授予對我的服務運行的帳戶以及“所有人”的完全控制權。
  • 我們成功地在兩台服務器之間手動發送了msmq消息。
  • 我已將我的服務配置為向本地專用隊列發送響應,同樣的錯誤。

問題是MSMQ找不到應用程序池用戶的證書。 也就是說,0xc00e0003,MQ_ERROR_QUEUE_NOT_FOUND確實是由0xC00E002F引起的,MQ_ERROR_NO_INTERNAL_USER_CERT將安全設置更改為

<transport msmqAuthenticationMode="None" msmqProtectionLevel="None" />

已啟用的消息將被發送。 當然,真正的解決方案不是禁用安全性,而是確保在msmq中安裝應用程序池用戶證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM