簡體   English   中英

WCF net.msmq服務自動激活

[英]WCF net.msmq service auto activation

我必須使用在IIS 7中托管的net.msmq協議的WCF服務。我的問題是,當隊列中出現新消息時,服務不會激活,您必須先啟動服務,然后才能啟動拿起任何消息。

有沒有辦法自動激活這些服務?

在此先感謝您的幫助

親切的問候,Brian

在Tom Hollander的博客上,有一個非常好的三部分關於讓WCF,MSMQ和IIS運行起來並在一起玩得很好的系列:

也許那些會有所幫助? 如果一切配置正確,IIS7中托管的MSMQ肯定會自動獲取WCF消息。

有一些設置沒有開箱即用 - 請參閱第1部分。您可能需要添加和啟用其他Windows功能,並且可能需要運行appcmd.exe工具來配置WAS(Windows激活服務器,部分IIS7)自動處理非http請求。

我知道這是一個老帖子,但萬一其他人來找那個問題......

如果在關閉應用程序池后服務未激活,則很可能是因為隊列名稱與de service URI不匹配,因此WAS不知道要激活哪個應用程序。

因此,例如,如果您在默認網站中創建應用程序“服務”並具有FirstService.svc,則隊列名稱應為私有$ \\ Services / FirstService.svc

[編輯:隊列名稱應包含多個應用程序名稱]

這是因為使用MSMQ時WAS不會自動激活或“預熱”。 解決方案是查看IIS 7預熱模塊或者像負載平衡器一樣ping你的服務(我們使用F5設備來執行此操作)。 更新 - 這是IIS 8應用程序初始化的鏈接

我的解決方案是這里的一些答案。 我的隊列具有身份驗證啟用,因此如果不使用身份驗證,則可能不需要某些步驟。

以下是我在Windows 2012上執行的步驟:

1)安裝非http激活服務WAP( https://msdn.microsoft.com/en-us/library/ms731053 ( v=vs.110 ) .aspx

2)創建與IIS應用程序同名的隊列,如private$/<WCF application>/myservice.svc

Net.Msmq Listener Adapter服務將嘗試匹配IIS中的隊列和WCF應用程序名稱,如VdesmedT所指示的那樣。

3)在現場和應用程序上啟用協議。

首先創建綁定:

%windir%\\ system32 \\ inetsrv \\ appcmd.exe設置站點“默認網站” - +綁定。[protocol ='net.tcp',bindingInformation ='808:*']

網站綁定應如下所示: 在此輸入圖像描述

然后為站點啟用協議net.msmq

%windir%\\ system32 \\ inetsrv \\ appcmd.exe set config -section:system.applicationHost / sites“/ [name ='Default Web Site']。[path ='/'] .enableProtocols”:“http,net.msmq “/ commit:apphost

此命令將重寫協議,因此如果您具有多個http啟用,則需要將其添加到命令行。

在Advanced Settins你應該看到:

在此輸入圖像描述

最后為應用程序啟用協議net.msmq

%windir%\\ system32 \\ inetsrv \\ appcmd.exe設置應用程序“默認網站/”/enabledProtocols:http,net.tcp

應用程序的“高級設置”屏幕應顯示與啟用的協議行上的站點“高級設置”中顯示的內容相同的內容。

4)將IIS應用程序的隊列權限授予讀取,查看和刪除,獲取屬性和設置屬性。 默認帳戶是IIS Apppool \\ DefaulApp

5)授予服務隊列的查看權限Net.Msmq Listener Adapter (默認為Network Service

不應該,但我必須在更改權限后重新啟動。

檢查:

  • 要檢查WCF是否已正確設置,只需使用瀏覽WCF應用程序來激活它。 應該處理隊列中的任何消息。

  • 要檢查WAS是否正在激活WCF應用程序,請回收應用程序池並發送新消息。 如果WAS工作,它應該立即處理。

我發現,在帶有IIS 7.5和.NET 4.0的Windows 7上,默認情況下禁用並停止NetMsmqActivator服務。 您需要啟用它並啟動它。

此外,隊列必須允許應用程序池使用的帳戶和NetMsmqActivator使用的帳戶使用“接收消息”和“查看消息”。 在默認安裝中,您可以使用IIS APPPOOL\\ASP.NET v4.0 (您必須輸入: IIS APPPOOL\\ASP.NET v4.0 ',注意空格)和NETWORK SERVICE

在具有這些屬性的系統中,我們已經觀察了這個問題一個多月了:

  • 混合服務,基於http和msmq,基於IIS7.5上的WAS托管
  • 使用的msmq協議:net.msmq
  • 服務不在根網站中,而是在下面的應用程序中

我們一直在執行所有指導和解決問題的技術,包括:*在iis和應用程序級別上的協議設置。 *隊列命名*隊列,Windows服務和iis的安全設置

但問題仍然存在。 我們的解決方案是遵循: http ://www.daczkowski.net/tag/wcf/這是將appfabric安裝到我們的iis上並設置自動啟動服務。

問題本身很難完全定義,我們可以說只是“有時服務將停止從隊列中處理”

只需在IIS中將應用程序自動啟動設置為“啟用”即可

暫無
暫無

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

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