首先,將管理員從IIS_WPG組中取出,然後再忘記,並將應用程序池配置恢復正常。
現在,通過將啓用WCF日誌記錄服務在你的web.config文件中的下列 -
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="c:\logs\web_messages.svclog"*
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
...
<diagnostics>
<messageLogging logMalformedMessages="true" *logMessagesAtServiceLevel="true"*
logMessagesAtTransportLevel="true" />
</diagnostics>
...
</system.ServiceModel>
創建C:\ logs目錄,並確保應用程序池標識的用戶對具有完全控制該目錄。現在測試你的應用。
如果沒有創建日誌文件,那麼在到達WCF服務時會出現問題。 如果正在創建日誌文件,請在作爲Windows SDK一部分提供的Service Trace查看器中查看它們。您會看到一條紅色的消息,它是包含服務內部拋出的異常的日誌條目 - 這應該會給您一個指向您的服務代碼出錯的指針。
如果問題出在你的應用程序中,而不是服務,那麼你應該在Application_Load
事件中記錄異常(無論如何你應該記錄異常) - 但是如果你嘗試使用全局異常處理程序,那麼你的應用程序是在啓動失敗,所以全局異常處理程序將永遠不會開始運行 - 而不是將可能的failable方案放入Application_Load
我會將它移出一個實用程序類,它提供了所需信息的訪問點(例如myGlobalThingumy.GetStuff() )。讓這個班級成爲一個單身人士,然後檢查你是否已經擁有了這些東西 - 如果你不這樣做,那麼你就打電話給你的網絡服務。它的作用與將它放在Application_Load
中的情況大致相同,但可以使全局錯誤處理正常工作,並且使調試變得更加簡單。
「對webervices的請求失敗」 - 它如何失敗?是否有例外?請張貼它。事件日誌中是否有任何內容?發佈。 – 2009-08-16 20:31:37
我從web服務返回一個503。我將訪問過的URL寫入日誌文件,並且在瀏覽器中正常工作。由於代碼工作正常,如果從Visual Studio啓動,我還無法通過調試器獲取更多信息。 – Achim 2009-08-16 20:53:16
我試圖進一步調試問題。如果我給myApp配置了一個不存在的錯誤URL,我仍然會得到一個503.這很奇怪,因爲我期望404。我嘗試使用Fiddler來查看請求的細節,但是沒有請求顯示在小提琴手。所以我認爲這個請求甚至不會離開myApp。不知何故,本地請求必須禁止在該機器上,但我不知道爲什麼以及如何檢查!? – Achim 2009-09-07 10:23:11