WCF FaultException 是否支持与Java Web服务错误的互操作

我编写了一个java axis2 1.4.1 Web服务和.net 3.5 WCF客户端,我试图捕获抛出的wsdl错误。

与.net 2.0不同,.net 3.5声称支持wsdl:fault ,服务引用向导确实在客户端代理中生成所有正确的错误类。 但是当我试图捕获一个错误时,它似乎没有正确序列化,所以我只能catch (FaultException ex)而不是我实际使用FaultException抛出的类型FaultException

我查看了我的reference.cs我可以看到向导已经为我的操作添加了正确的FaultContract

 [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] [System.ServiceModel.ServiceContractAttribute(Namespace="http://www.mycomp.com/wsdl/Foo", ConfigurationName="FooServiceProxy.Foo")] public interface Foo { [System.ServiceModel.OperationContractAttribute(Action="http://www.mycomp.com/Foo/list", ReplyAction="*")] [System.ServiceModel.FaultContractAttribute(typeof(TestWsdlFaultsApp.FooServiceProxy.SimpleFault), Action="http://www.mycomp.com/Foo/list", Name="simpleFault")] [System.ServiceModel.XmlSerializerFormatAttribute()] TestWsdlFaultsApp.FooServiceProxy.listResponse list(TestWsdlFaultsApp.FooServiceProxy.listRequest request); } 

我还需要在.net中做些什么才能让它发挥作用吗? 或者WCF仅支持来自.net Web服务的自定义wsdl错误?

inheritance人我的wsdl

                                                                                

WCF应该与axis2exception一起使用。 我有它的工作,但我不记得所有的细节。

当您使用SOAP监视器或类似的东西时,您在故障消息正文中看到了什么?

如果你没有捕获FaultException ,那意味着你可能没有发送它。 注意所使用的XML命名空间。 使用Fiddler或类似的东西看看你发送的是什么。

FaultException适用于Java,甚至适用于WCF。

谢谢约翰,你让我走上了正确的道路,问题显而易见:当我在java(axis2)中抛出错误时,我没有设置细节。

DODGY代码:

 throw new SimpleException("SimpleFault thrown"); 

工作代码:

  SimpleFault fault = new SimpleFault(); fault.setReason("SimpleFault reason"); SimpleFaultE faultMessage = new SimpleFaultE(); faultMessage.setSimpleFault(fault); SimpleException ex = new SimpleException("SimpleFault thrown"); ex.setFaultMessage(faultMessage); throw ex; 

所以AXIS2 – > WCF wsdl:fault interop工作得很好……