2010-05-11 121 views
0

我有一個問題讓我有點困惑,我不知道它會是什麼。Webservice和IIS的奇怪問題

我使用的系統是Windows Vista,IIS 7.0,VS2008,Windows軟件工廠,實體框架,WCF。所有Web服務的綁定都是wshttpbinding。

我正在使用IIS中託管的Web服務。此Webservice使用/調用另一個Web服務(也安裝在IIS中)。如果我使用調用第一個Webservice(調用第二個Webservice)的客戶端,它可以正常工作4-10次。然後(可以重複得到這個問題,但有時會發生在4之後,有時在10次之後,但總是會發生的),服務和IIS卡住了。

卡住意味着此Web服務不再可調用並在1分鐘後生成超時。 即使增加超時也沒有改變任何東西。

如果我嘗試重新啓動IIS,我得到一個超時錯誤(這真的讓我感到困惑,似乎Web服務以某種方式「崩潰」並阻止了IIS的重新啓動)。所以IIS也「卡住」(它並沒有真正卡住,但我無法重新啓動它)。只有當我殺死了w3wp.exe IIS才能重新啓動,並且Webservice將再次工作(直到我再次調用此服務幾次)。

日誌文件(我不擅長記錄日誌或在哪裏找到/啓用這些日誌,所以說:我是新手)像HTTP日誌記錄,事件查看器或WCF消息日誌記錄不顯示有關問題根源的任何提示。

當我使用不調用其他服務的Web服務時,我沒有這個問題。 調用Webservice是由服務引用完成的(我沒有使用代理類),但我認爲這應該不是問題。

我不知道發生了什麼,也不知道如何解決這個問題。

問候 劉若英

編輯。 :我希望我的帖子現在更具可讀性:-)

+0

段落可能會幫助您獲得更多答案 - 難以閱讀您的問題。你的web服務中的代碼是幹什麼的?其他webservice在做什麼?你可以發佈一些代碼嗎? – Paddy 2010-05-11 10:37:49

+0

該代碼向數據庫查詢一些信息。這是一個簡單的DB-Read(使用Linq完成),它只返回一個字符串。因此,「守則」沒有做任何複雜的工作。 我測試過它也有一些更復雜的代碼(更復雜的意思是返回更多的數據),但我也有這個問題。 我可以嘗試的唯一的解決方案步驟(我的關於整個主題的知識非常有限)是將綁定從wshttpbinding更改爲basichttpbinding(我也必須使用wshttpbinding)。 – Rene 2010-05-11 11:33:23

回答

0

System.Diagnostics.Debugger.Break()插入您的網絡服務代碼。當達到這一點時,您將能夠逐步完成服務邏輯。這可以幫助您診斷死鎖的原因。

另一種選擇是turn on WCF Tracing,並以此方式進行診斷。