【发布时间】:2011-01-09 14:34:36
【问题描述】:
我正在尝试将我自己的自定义异常从我的 WCF 服务抛出到 FaultException 中,并在我的 WCF 客户端中捕获它。但是,在客户端,异常被捕获为非泛型 FaultException,并且我的自定义异常的详细信息丢失了。
我的自定义例外是:
[Serializable] public class MyCustomException : ApplicationException
{ ... }
我是这样扔的:
throw new FaultException<MyCustomException>(new MyCustomException("foo bar!"));
(请注意,我确实在接口中的方法上放置了 [FaultContract(typeof(MyCustomException))])
这是我尝试在我的客户端中捕获它的方法:
...
catch (FaultException<MyCustomException> mcex)
{
Console.WriteLine(mcex);
}
catch (FaultException fex)
{
Console.WriteLine(fex);
}
我的目标是在上面的第一个 catch 子句中捕获异常,但它最终会在第二个 catch 子句中捕获。
奇怪的是,如果我将 MyCustomException 替换为 ApplicationException,那么 FaultException 确实会被正确捕获。
我猜问题是 MyCustomException 被序列化为 Serializable(而不是通过 DataContractSerializer),并且可能我缺少一些对 WCF 的附加指令。 ServiceKnownType 属性行中的内容? (虽然我试过了,但无济于事)。
【问题讨论】:
标签: .net wcf exception-handling faultexception