我在从wcf服务返回自定义错误异常时遇到了一些麻烦。与wcf服务通信的客户端应用程序获取 - 合同不匹配错误。 这是我在服务中定义的错误合同:
public partial class Fault
{
string codeField;
string messageField;
string detailsField;
}
服务中的错误我正在创建自定义错误异常,如下所示:
public void ProvideFault(Exception exception, MessageVersion version, ref Message refMessage)
{
mynamespace.Fault customFault = new mynamespace.Fault()
{
code = "Service Error",
message = "Error Message",
details = "Error Message"
};
FaultException<mynamespace.Fault> faultexception = new FaultException<mynamespace.Fault>( customFault );
MessageFault messageFault = faultexception.CreateMessageFault();
refMessage = Message.CreateMessage( version, messageFault, faultNamespace );
}
此代码导致客户端中的合同不匹配错误。任何人都可以帮我找到问题吗?
答案 0 :(得分:3)
指定需要返回的错误类型(例如,创建一个UserMismatchFault类),然后像这样抛出它:
throw new FaultException<UserMismatchFault>(myFault);
答案 1 :(得分:3)
答案 2 :(得分:2)
什么是faultNamespace
? CreateMessage
的第三个参数应该是操作(faultException.Action
)。另外,请不要忘记,Fault
类必须有效DataContract
- 如果默认序列化,成员必须为public
。
答案 3 :(得分:2)
希望example on Code Project可以帮助你