Share via


疑難排解 RIA Services 方案部署

疑難排解 WCF RIA Services 方案代表獨特的挑戰,因為例外狀況可能會在許多不同層的其中一層發生。您必須了解這些不同層如何回報錯誤,才能有效地疑難排解應用程式。本主題介紹這些層,並提供發生例外狀況時,疑難排解 RIA Services 應用程式的一些技巧。此外,新部署指南也說明部署 RIA Services 時可能會遇到的許多問題,如需詳細資訊,請參閱 RIA Services 方案部署指南

例外狀況流程

在 RIA Services 應用程式中,從最低起始層到用戶端的例外狀況流程依序如下:

  1. 網域服務

  2. RIA Services 服務主機

  3. WCF

  4. ASP.NET

  5. IIS

  6. Silverlight 應用程式

層的例外狀況流程

啟用詳細的 ASP.NET 錯誤資訊

根據預設,Web.config 檔案中的 customErrors 項目設定為 RemoteOnly,這表示遠端用戶端不會收到詳細 ASP.NET 錯誤資訊。若要偵錯您的應用程式,請將 customErrors 設為 Off,如此您就可以從用戶端看到詳細的 ASP.NET 錯誤。

note注意:
customErrors 設為 Off 時,請不要讓應用程式公開使用,因為錯誤訊息可能會對使用者公開機密資訊。

使用 Fiddler 檢查錯誤

所有來自網域服務的例外狀況都會以錯誤狀態碼 200 傳送至 Silverlight 用戶端。所有在 WCF 層或以下擲回的例外狀況都會以狀態碼 404 傳送至 Silverlight 用戶端。您可以使用 Fiddler HTTP 偵錯工具來查看實際錯誤。

直接瀏覽網域服務

直接瀏覽網域服務的 .svc 檔案通常是查看 WCF 服務是否可供使用的有用步驟。不過,判斷 .svc 檔案路徑並不簡單,因為 .svc 不存在於您的方案中。您可以使用下列模式,在 Web 瀏覽器中直接瀏覽網域服務:

http://[主機]/[已修改的網域服務類別名稱].svc

您可以藉由使用完整的類別名稱,並以破折號 (-) 取代每一個句點 (.),判斷修改過的類別名稱。因此,如果網域服務的名稱是:

ExampleApplication.Web.CustomerDomainService

.svc 檔案名稱就是:

ExampleApplication-Web-CustomerDomainService.svc

如果這個檔案是裝載在 localhost 上,您可以巡覽至下列位置,直接瀏覽檔案:

https://localhost/ExampleApplication-Web-CustomerDomainService.svc

如果服務是可用,您會看到服務資訊以及如何測試服務之相關資訊的網頁。如果無法使用服務,您會看到可能有協助判斷問題之資訊的錯誤頁面。如果您收到錯誤,例外狀況可能起源於 RIA Services 服務主機層。

覆寫網域服務 OnError 方法

在處理 DomainService 作業期間發生無法復原的錯誤時,會呼叫 OnError 方法。您可以覆寫這個方法,以便在錯誤傳送到用戶端之前檢查錯誤。

使用傳統的 WCF 追蹤技術

疑難排解 WCF 層的例外狀況就如同疑難排解任何 WCF 服務一樣。如需 WCF 服務診斷追蹤的詳細資訊,請參閱追蹤

起源於 WCF 層的例外狀況不會顯示在 Fiddler。您可以藉由嘗試瀏覽 .svc 檔案,疑難排解服務例外狀況。如果瀏覽 .svc 檔案時沒有發生錯誤,但在執行階段服務失敗,例外狀況就可能起源於 WCF 層。

檢查 ASP.NET 和 IIS 設定

對於在 ASP.NET 和 IIS 層擲回的例外狀況,RIA Services 應用程式的資訊並不包含在堆疊中。在下列情況下,您可能會看到此層級的例外狀況:

  • Web.config 檔案沒有您正在使用的 IIS 版本所需的正確 HttpModule 項目。

  • Web 伺服器上未啟動 WCF。