我想定製從我的WCF數據服務拋出的異常/錯誤,這樣客戶端就可以獲得儘可能多的錯誤信息。有關如何實現這一目標的任何想法?使用WCF數據服務處理異常
8
A
回答
0
0
我不認爲他想知道如何在.NET中拋出/捕獲異常。
他可能想知道如何告訴客戶端使用WCF數據服務時,在服務器(服務)端拋出/捕獲異常時出現了什麼(以及什麼)出錯。
WCF數據服務使用HTTP請求/響應消息,您不能僅從服務向客戶端拋出異常。
3
你可以用這個屬性ServiceBehaviorAttribute裝飾你的服務類,像這樣:
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class PricingDataService : DataService<ObjectContext>, IDisposable
{
...
}
10
有你需要做的,以確保在HTTP管道客戶端異常泡沫的幾件事情。
您必須屬性您DataService類有以下幾點:
[ServiceBehavior(IncludeExceptionDetailInFaults =真)] 公共類MyDataService:DataService的
您必須啓用配置詳細的錯誤:
public static void InitializeService(DataServiceConfiguration config) { config.UseVerboseErro rs = true; }
最好是內扔DataServiceException。 WCF數據服務運行時知道如何將屬性映射到HTTP響應,並始終將其包裝在TargetInvocationException中。
[WebGet]
public Entity OperationName(string id)
{
try
{
//validate param
Guid entityId;
if (!Guid.TryParse(id, out entityId))
throw new ArgumentException("Unable to parse to type Guid", "id");
//operation code
}
catch (ArgumentException ex)
{
throw new DataServiceException(400, "Code", ex.Message, string.Empty, ex);
}
}
然後,您可以通過重寫HandleException在你的DataService像這樣解開這個客戶端消費者:
/// <summary>
/// Unpack exceptions to the consumer
/// </summary>
/// <param name="args"></param>
protected override void HandleException(HandleExceptionArgs args)
{
if ((args.Exception is TargetInvocationException) && args.Exception.InnerException != null)
{
if (args.Exception.InnerException is DataServiceException)
args.Exception = args.Exception.InnerException as DataServiceException;
else
args.Exception = new DataServiceException(400, args.Exception.InnerException.Message);
}
}
更多信息,請參見here ...
相關問題
- 1. WCF服務異常處理
- 2. 啓用Silverlight WCF服務異常處理
- 3. WCF REST服務 - 通用異常處理
- 4. WCF數據服務異常
- 5. wcf服務的異常處理
- 6. 處理來自異步WCF Web服務異常的異常
- 7. 在WCF服務中使用Office自動處理引發異常
- 8. C#:在WCF服務中使用「using/try/catch」來處理異常
- 9. Wcf異常處理
- 10. WCF異常處理
- 11. Web服務異常處理
- 12. Web服務異常處理
- 13. 未處理的異常會使WCF服務崩潰?
- 14. WCF異常處理代理
- 15. WCF服務異常
- 16. 處理來自web服務代理的WCF異常
- 17. 處理異常WPF應用程序與WCF服務
- 18. 使用IErrorHandler處理WCF異常
- 19. WCF數據服務錯誤處理
- 20. WCF RIA Services業務規則/數據庫異常處理
- 21. WCF異常:InvalidOperationException異常是未處理
- 22. WCF異步服務器端處理
- 23. 處理異步ASMX Web服務異常
- 24. WCF全局異常處理
- 25. WCF異常處理策略
- 26. WCF:處理哪種異常
- 27. WCF服務的企業庫異常處理問題
- 28. WCF REST服務級別的異常處理NOT全局
- 29. 在WCF服務中處理在DLL中生成的異常
- 30. 只能在一個地方處理WCF Rest服務異常
我在C#開發。但是,我從服務中拋出的例外情況並沒有達到使用該服務的客戶端。 – Martinfy 2010-08-17 11:17:32