gpt4 book ai didi

wcf - FaultException 和自定义异常 WCF

转载 作者:行者123 更新时间:2023-12-02 05:36:38 24 4
gpt4 key购买 nike

我有一个关于如何将自定义异常作为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/en-us/library/ms576199.aspx .

我假设(但不确定)ArgumentException 有效,因为它在线路的两侧都是已知的(假设您在每一侧都使用 .NET)。如果不将异常声明为 DataContract,则 DataContractSerializer 无法正确描述和序列化/反序列化它。

关于wcf - FaultException 和自定义异常 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com