【发布时间】:2017-05-09 15:40:57
【问题描述】:
我有一个与 WebApi 通信的 WCF 服务。当我的 WCF 抛出自定义异常时,例如 AutoMapperMappingException,当它将异常序列化回 WebApi 时,我得到一个 ReadFault,因为 WebApi 没有安装 Automapper。
现在这是一个普遍的问题,任何第三方库都可能发生,所以我不想在 WebApi 上安装第三方库。
有没有一种方法可以在保留堆栈跟踪的同时更改异常的类型。
我想做这样的事情(每个异常都需要它自己的自定义实现,但这没关系):
public void ThrowKnownException(AutoMapperMappingException ex)
{
var message = FormatMessage(ex);
var knownException = new Exception(message);
knownExcpetion.StackTrace = ex.StackTrace;
throw knownException;
}
这不起作用,因为您无法分配 StackTrace。有谁知道这样做的干净方法?
编辑: 添加内部异常将不起作用,因为 WCF 仍需要将内部异常序列化到 webapi,这将创建读取错误
【问题讨论】:
-
您是否反对仅将其添加为内部异常?
-
@Lithium 是的,添加内部异常不起作用,因为内部异常也需要序列化回来
标签: c# wcf asp.net-web-api exception-handling stack-trace