当投掷一个FaultException<CustomFault>
像这样:
throw new FaultException<CustomFault>(new CustomFault("Custom fault message"));
我得到以下信息:“此错误的创建者没有指定原因。”
现在根据这篇 MSDN 文章 http://msdn.microsoft.com/en-us/library/ms576199.aspx不需要使用FaultReason
我有以下服务合同:
[OperationContract]
[FaultContract(typeof(CustomFault))]
CustomType[] SomeMethod(int someParameter);
[DataContract]
public class CustomFault
{
private string report;
public CustomFault(string message)
{
this.report = message;
}
[DataMember]
public string Message
{
get { return this.report; }
set { this.report = value; }
}
}
MSDN 文章上有一条评论建议强制使用其他FaultReason
,但在其他几个地方我看到人们争论说你不应该使用FaultReason
除非有必要。
所以我的问题如下;真的强制使用FaultReason
如果不是 - 我怎样才能防止在尝试抛出异常时引发异常FaultException
?
EDIT
通过运行示例项目本文 http://msdn.microsoft.com/en-us/library/ee942778.aspx我得到完全相同的行为。也许这是由于 .NET 更新而文档/示例未更新所致。
错误需要理由而详细信息是可选的.
WCF 使用的值故障异常.原因 http://msdn.microsoft.com/en-us/library/system.servicemodel.faultexception.reason.aspx属性来填充<faultstring>
SOAP 错误的元素,这是必需的SOAP规范 http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507:
断层串
故障字符串元素旨在提供人类可读的故障解释,而不是用于算法
加工。[...]它必须出现在 SOAP 错误元素中并且
应至少提供一些信息来解释该项目的性质
过错。
因此,你必须提供理由对于投掷时的错误错误异常 http://msdn.microsoft.com/en-us/library/ms576192.aspx来自 WCF 服务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)