2014-06-25 124 views
0

我有一個.NET 4.5 WCF Web服務,它使用安裝了AppFabric的Windows Server 2008 R2上運行的本地私有MSMQ隊列中的消息。其他服務使用的Web服務消息

該服務讀取隊列消息並處理消息中引用的文件,我使用AppFabric來限制服務處理16個併發消息,每個AppPool工作進程8個。

AppPool使用的是具有存儲待處理文件的網絡共享權限的域帳戶。

這項服務多年來一直運行良好,除了上週被請求處理的文件約有90%未通過UnauthorizedAccessException失敗。

此行爲是在該應用程序服務器上的所有服務中展示的,無論服務被要求從哪個文件服務器處理文件。即使以前處理文件的文件現在也失敗了。

+0

Porque downvote? –

+0

我有一個非常有趣的答案,但顯然我不能發佈8小時,道歉,如果你有同樣的問題。 – JonPen

+0

不,我的意思是有人低估了你的問題而不留下一個非常粗魯的評論。但是,我對你的問題提出了高分,讓你的問題得分爲0。期待你的回答。 –

回答

1

經過長時間徒勞的週末搜索和各種不同的東西,包括黑客:

  • 共享文件夾權限和配額
  • Windows許可(CAL的等)
  • 防火牆
  • 各種軟件的補丁網絡應用程序

我最終發現了偶然發生的實際問題,whils重新部署Web應用程序我注意到一些奇怪的事情。當我通過IIS中的WCF菜單停止Web應用程序時,消息繼續被消耗,因此我停止了停止運行Web服務的應用程序池,但消息仍在消耗,儘管這可能是由於延遲較大當大量消息回滾到有害消息隊列時,分佈式事務服務將其添加到MQMQ消息狀態,所以我去吃午餐。當我回來時,消息仍在消耗,進程資源管理器確認運行我的服務器的apppool不再執行。

東西明顯上升,但不確定的天氣,這是原因,症狀或巧合。最重要的是,當我扼殺我的服務時,一次只處理一條消息,以查看訪問權限是否達到某種限度,我注意到失敗率上升到了98%。這表明其他的東西正在處理這些信息並失敗,但也只能以我的應用程序的方式將這些故障報告給我的報告系統。

我進一步調查發現,默認應用程序池用於服務默認網站,也執行我的WCF Web服務,但無法訪問文件服務器上的文件,因爲用於運行默認應用程序池的標識沒有特權失敗花費的時間少於成功的文件處理時間,因爲我使服務越慢,默認應用程序池失敗的消息就越多。

原因

雖然我是調節我的web應用程序的限制,我無意中設置節流或默認的Web站點,這是家長的Web應用程序,我注意到了這個海峽,距離重新設置回到默認值。我當時沒有意識到的是,這已經爲默認網站的網頁配置添加了<system.servicemodel>標籤。其結果是,我的默認網站開始行爲像一個Web應用程序,由於我還不明白的原因,它開始執行其子Web應用程序的功能,它可能與WAS激活有關,我所知道的是我絕對不是理想的行爲。

的修復

我刪除了<system.servicemodel>標籤,並從默認網站web.conf其內容,並從它的啓用的協議列表中刪除net.msmq,一切恢復正常。