[英]WCF SOAP Fault incorrect type
首先,這是我的設置:
我的問題是當我向客戶端發送SOAP Fault時:對於錯誤詳細信息,我無法訪問代碼中的正確類型,因此客戶端無法處理此錯誤。
以下是WSDL的摘錄,供您理解:
<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元素並正確填充它; 但是當出現FaultException時,我只能發送回CreateScheduledWorkFaultMessage (而不是CreateScheduledWorkFault)。 客戶端無法處理此標簽...
換句話說,CreateScheduledWorkFault類型在代碼中不可用。
->我懷疑使用svcutil從WSDL和XSD生成代碼時出了點問題 ,因為我無法訪問代碼中所需的類型。
我以這種方式使用svcutil:
svcutil / useSerializerForFaults CSW.wsdl CSW.xsd CSW_Fault.xsd
感謝您的幫助,如果您需要更多詳細信息,請不要猶豫。
鮑里斯
我的解決方案是直接修改生成的類中的類型……這很糟糕,但是在我的情況下,這是我唯一的選擇(通常,我永遠不要重新生成它,因為WSDL永遠不會改變)。
現在,我還有另一個問題,但是它與名稱空間有關,因此我將為此提出一個新問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.