我有一个基于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");
}
有没有办法从消息中创建通用故障异常实例?
答案 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);