我有一个与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,这将导致读取错误