Asp.net WCF SOAP错误类型不正确
首先,这是我的设置:Asp.net WCF SOAP错误类型不正确,asp.net,wcf,svcutil.exe,faultexception,soapfault,Asp.net,Wcf,Svcutil.exe,Faultexception,Soapfault,首先,这是我的设置: .NET4.0ASP.Net应用程序 WCF服务,带有basicHttpBinding(soap 1.1) 引用类是使用svcutil生成的,带有选项/useSerializerForFaults;WSDL定义所有操作,并提供指向types.xsd和types_fault.xsd文件的链接。仅供参考,WSD和XSD文件在许多应用程序中都很常见,因此我无法修改它们(当然,除非存在一些主要的验证错误) 当我向客户机发送SOAP错误时,我的问题就存在了:我无法访问代码中错误详
- .NET4.0ASP.Net应用程序
- WCF服务,带有basicHttpBinding(soap 1.1)
- 引用类是使用svcutil生成的,带有选项/useSerializerForFaults;WSDL定义所有操作,并提供指向types.xsd和types_fault.xsd文件的链接。仅供参考,WSD和XSD文件在许多应用程序中都很常见,因此我无法修改它们(当然,除非存在一些主要的验证错误)
<wsdl:message name="CreateScheduledWorkRequest">
<wsdl:part name="parameters" element="root:CreateScheduledWork"/>
</wsdl:message>
<wsdl:message name="CreateScheduledWorkResponse">
<wsdl:part name="parameters" element="root:CreateScheduledWorkResponse"/>
</wsdl:message>
<wsdl:message name="CreateScheduledWorkFault">
<wsdl:part name="parameters" element="root:CreateScheduledWorkFault"/>
</wsdl:message>
<wsdl:portType name="ManageScheduledWorkScheduledWorkManagement">
<wsdl:operation name="CreateScheduledWork">
<wsdl:input name="CreateScheduledWorkRequest" message="intf:CreateScheduledWorkRequest"/>
<wsdl:output name="CreateScheduledWorkResponse" message="intf:CreateScheduledWorkResponse"/>
<wsdl:fault name="CreateScheduledWorkFault" message="intf:CreateScheduledWorkFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ManageScheduledWorkScheduledWorkManagementBinding" type="intf:ManageScheduledWorkScheduledWorkManagement">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="CreateScheduledWork">
<wsdlsoap:operation soapAction="http://www.orange.com/MACHX/Interfaces/ManageScheduledWork/ScheduledWorkManagement/v1/CreateScheduledWork"/>
<wsdl:input name="CreateScheduledWorkRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="CreateScheduledWorkResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CreateScheduledWorkFault">
<wsdlsoap:fault name="CreateScheduledWorkFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
例如,当我返回一个响应时(没有发生错误),我可以使用CreateScheduledWorkResponse元素,并正确填充它;但是当发生故障异常时,我只能发回CreateScheduledWorkFaultMessage(而不是CreateScheduledWorkFault)。客户端无法处理此标记
换句话说,CreateScheduledWorkFault类型在代码中不可用
-->我怀疑在使用svcutil从WSDL和XSD生成代码时出现了问题,因为我无法访问代码中所需的类型
我使用svcutil的方式如下:
svcutil/useSerializerForFaults CSW.wsdl CSW.xsd CSW_Fault.xsd
谢谢你的帮助,如果你需要更多的细节,请不要犹豫
Boris我的解决方案是直接修改生成的类中的类型。。。这很糟糕,但在我的情况下,这是我唯一的选择(通常我不应该重新生成它,因为WSDL永远不会改变) 现在我有另一个问题,但它与名称空间更相关,因此我将为此提出一个新问题