[英]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
。
在具有這些屬性的系統中,我們已經觀察了這個問題一個多月了:
我們一直在執行所有指導和解決問題的技術,包括:*在iis和應用程序級別上的協議設置。 *隊列命名*隊列,Windows服務和iis的安全設置
但問題仍然存在。 我們的解決方案是遵循: http ://www.daczkowski.net/tag/wcf/這是將appfabric安裝到我們的iis上並設置自動啟動服務。
問題本身很難完全定義,我們可以說只是“有時服務將停止從隊列中處理”
只需在IIS中將應用程序自動啟動設置為“啟用”即可
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.