FaultException和自定义异常WCF

| 我对如何将自定义异常作为FaultException发送有疑问。当我使用诸如ArgumentException之类的系统异常时,它可以工作,但是如果将其更改为自定义异常\“ TestException \”,它将失败。尝试添加服务参考时,无法获取该配置。 作品:
[OperationContract]
[FaultContract(typeof(ArgumentException))]
[TransportChannel TestMethod ();


public Void TestMethod()
{
            throw new FaultException<ArgumentException>(new ArgumentException(\"test\"), new FaultReason(\"test\"));
}
不起作用:
[OperationContract]
[FaultContract(typeof(TestException))]
[TransportChannel TestMethod ();


public Void TestMethod()
{
            throw new FaultException<TestException>(new TestException(\"test\"), new FaultReason(\"test\"));
}
我的“ TestException”看起来像这样:
[Serializable()]
public class TestException: Exception
{
    public TestException () : base() { }
    public TestException (string message) : base(message) { }
    public TestException (string message, Exception innerException) : base(message, innerException) { }
    public TestException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}
我猜想我必须在自定义对象上添加DataContract,但是我不明白为什么它不能按原样工作,因为ArgumentException有效。有人可以启发我吗? 感谢帮助 :)
已邀请:
您确实需要按照此页面上的说明使用[DataContract]对其进行标记:http://msdn.microsoft.com/zh-cn/library/ms576199.aspx。 我假设(但不确定)ArgumentException可以正常工作,因为它在导线的两面都是已知的(假设您在每一侧都使用.NET)。如果不将异常声明为DataContract,则DataContractSerializer无法对其进行正确描述和序列化/反序列化。
您当然需要将其标记为DataContract。这是另一端(您的客户端)不知道的自定义类型。

要回复问题请先登录注册