2012-08-23 70 views
2

從WCF數據服務拋出異常並從.net客戶端捕獲它們的最佳做法是什麼?WCF數據服務中錯誤處理的最佳做法

+0

有人告訴如何在這裏:http://stackoverflow.com/questions/6508003/invalid-request-handling-in-data – 2012-10-02 16:07:43

回答

3

總的來說,我不確定是否有很多最佳實踐,但這裏有一些可能有所幫助的想法。

  1. 默認情況下,WCF數據服務不會向客戶端傳送異常詳細信息。這是因爲我們認爲服務在默認情況下應該是安全的。傳輸異常詳細信息可能會導致意外泄露信息。要打開詳細的異常傳輸,你需要的ServiceBehavior屬性UseVerboseErrors添加到您的服務,並設置爲true:

using System.Data.Services; 
using System.Data.Services.Common; 
using System.ServiceModel; 

namespace Scratch.Web 
{ 
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
    public class ScratchService : DataService<ScratchEntityFrameworkContext> 
    { 
     public static void InitializeService(DataServiceConfiguration config) 
     { 
      config.SetEntitySetAccessRule("*", EntitySetRights.All); 
      config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead); 
      config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; 
      config.UseVerboseErrors = true; 
     } 
    } 
} 
  1. 如果你扔在服務器端異常,只有消息在功能上傳輸給客戶端,因此請確保異常消息包含要在客戶端上顯示的內容。
  2. 除此之外,只需按照客戶端上異常處理的其他最佳做法:http://msdn.microsoft.com/en-us/library/seyhszts.aspx
相關問題