我有一個WCF服務與WebApi進行通信。當我的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;
}
這是行不通的,因爲你無法分配堆棧跟蹤。有誰知道一個乾淨的方式來做到這一點?
編輯: 添加一個內部例外是行不通的,因爲WCF仍然需要序列內異常的WebAPI,這將創造一個讀取故障
您是否反對將其添加爲內部異常? – Lithium
@Lithium是的,添加一個內部異常不會工作,因爲內部異常也需要被序列化回 –