2011-05-24 99 views
7

我有点麻烦从wcf服务返回自定义错误异常。与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

问题可能是别的地方,可你把一个破发点中ProvideFault看看 – 2011-11-22 11:45:19

回答

3

指定您需要返回(例如,创建一个UserMismatchFault类)是什么类型的故障,然后把它就像这样:

throw new FaultException<UserMismatchFault>(myFault); 
2

什么是faultNamespaceCreateMessage的第三个参数应为动作(faultException.Action)。另外请不要忘记,您的Fault类必须有效DataContract - 如果默认序列化成员必须是public