2009-12-13 93 views
4

我想找出一種方法來處理未處理的異常在服務器端。我想控制域服務級別的異常處理,以便在任何操作被調用時,我可以記錄異常並用一些漂亮的單詞包裝它以將其發送給客戶端。 我發現WCF和經典Web服務的許多方法,但沒有任何RIA服務。 請提供您的建議。RIA服務服務器端異常處理

回答

7

您需要覆蓋此WCF RIA Services Exception Handling博客條目中所述的DomainService.OnError方法。我已經在一個基本的DomainService類中完成了這項工作,而不是在我的應用程序中的每個單獨的DomainService類中,如下所示。 errorInfo.Error屬性沒有setter,所以我不認爲你可以用你自己的替換異常對象,但配置元素<system.web><customErrors mode="On" />可以防止異常的細節暴露給客戶端。

[EnableClientAccess()] 
public class DomainServiceBase : DomainService 
{ 
    protected override void OnError(DomainServiceErrorInfo errorInfo) 
    { 
     Logger.WriteException(errorInfo.Error); 
     base.OnError(errorInfo); 
    } 
} 
2

您可以查找特定的錯誤,然後拋出一個DomainException,它與標準的DomainOperationException不同。 DomainException中有一個ErrorCode,可以在客戶端使用它來指定在客戶端上將以不同方式處理的條件。

查看Kyle McClellan的回覆http://forums.silverlight.net/forums/t/193028.aspx。 凱爾的博客對於這些類型的問題也是一個很好的資源。