从wcf消息创建FaultException

时间:2012-12-11 00:10:22

标签: wcf

我有一个基于wcf的系统,它使用IRequestChannel通过通道发送原始WCF消息。尽管事先不知道服务合同,但故障合同是已知的,因此我知道每次出现故障消息时,它都应映射到FaultException类型。

我们也使用XmlSerializer进行序列化,因为DCS非常挑剔..

例如下面

 var requestChannel = this.GetRequestChannel();
 using (requestChannel as IDisposable)
 {
       responseMessage = requestChannel.Request(requestMessage);
  }
  if (responseMessage.IsFault)
  {
        throw new ApplicationException("Fault");                
  }

有没有办法从消息中创建通用故障异常实例?

1 个答案:

答案 0 :(得分:0)

将故障合同添加到您的WCF运营合同中:

[ServiceContract()]
public interface IService
{
    [OperationContract]
    [FaultContract(typeof(MyFaultException))]
    string GetMessage();
}

然后当你有错误时抛出一个错误异常:

MyFaultException theFault = new MyFaultException();
heFault.Reason = "Some Error Message";
throw new FaultException<MyFaultException>(theFault);