我正在开发一个WCF Webservice并在mvc2应用程序中使用它。我的问题是,我在我的方法上使用了带有自定义FaultDetail的FaultContracts,我抛出了很多faultexception,但是当客户端收到异常时,它会收到一个普通的SoapException,而不是我从服务端抛出的FaultException。
下面是一些代码:
自定义故障详细信息类:
[DataContract]
public class MyFaultDetails
{
[DataMember]
public string Message { get; set; }
}服务合同操作:
[OperationContract]
[FaultContract(typeof(MyFaultDetails))]
void ThrowException();实施:
public void ThrowException()
{
var details = new MyFaultDetails { Message = "Exception Test" };
throw new FaultException<MyFaultDetails >(details , new FaultReason(details .Message), new FaultCode("MyFault"));
}客户端:
try
{
// Obv proxy init etc..
service.ThrowException();
}
catch (FaultException<MyFaultDetails> ex)
{
// stuff
}
catch (Exception ex)
{
// stuff
}我所期望的是捕获FaultException,而不是跳过该捕获,并使用SoapException类型的异常获取下一个捕获。
我是不是漏掉了什么?
我写了很多关于在wcf中使用faultcontracts的帖子,我所做的似乎是很好的。我查看了生成的wsdl和xsd,它们看起来都很好。下面是关于这个方法的一个片段:
<wsdl:operation name="ThrowException">
<wsdl:input wsaw:Action="http://tempuri.org/IAnyJobService/ThrowException" message="tns:IAnyJobService_ThrowException_InputMessage" />
<wsdl:output wsaw:Action="http://tempuri.org/IAnyJobService/ThrowExceptionResponse" message="tns:IAnyJobService_ThrowException_OutputMessage" />
<wsdl:fault wsaw:Action="http://tempuri.org/IAnyJobService/ThrowExceptionMyFaultDetailsFault" name="MyFaultDetailsFault" message="tns:IAnyJobService_ThrowException_MyFaultDetailsFault_FaultMessage" />
</wsdl:operation>
<wsdl:operation name="ThrowException">
<soap:operation soapAction="http://tempuri.org/IAnyJobService/ThrowException" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault name="MyFaultDetailsFault">
<soap:fault use="literal" name="MyFaultDetailsFault" namespace="" />
</wsdl:fault>
</wsdl:operation>有什么帮助吗?
提前感谢
问候
Alessandro
发布于 2010-04-15 19:32:55
好了,伙计们,我自己解决。就像我说的,一切都是对的。我只是使用了错误的httpBinding (basic而不是ws)。如果你不使用wsHttpBinding,那么所有漂亮的FaultContract机制都无法工作。
完全谢谢你
问候
Alessandro
https://stackoverflow.com/questions/2644232
复制相似问题