我想定制从我的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