![](/img/trans.png)
[英]WCF - Replacing Fault node of Fault SOAP message with a custom fault message
[英]Processing WCF Fault Message
我正在使用 Visual Studio 2017 通過 .NET/C# 使用 WCF web 服務。以下是故障的詳細部分:
<detail>
<FatalException>
<errorCode>E 0008</errorCode>
<message>The business policies have been violated.</message>
<responseCode>FATAL_INT_ERROR</responseCode>
<validationErrors>
<associatedSeverity>0</associatedSeverity>
<attributeName>userld, process number</attributeName>
<attributeValue>NNNN******NNNN</attributeValue>
<errorCode>B 014</errorCode>
<errorMessage>Duplicate Transaction</errorMessage>
<objectName>ObjABCD</objectName>
</validationErrors>
<validationErrors>
<associatedSeverity>0</associatedSeverity>
<attributeName>userld, process number</attributeName>
<attributeValue>NNNN******NNNN</attributeValue>
<errorCode>AB 015</errorCode>
<errorMessage>Refer to procedure guide</errorMessage>
<objectName>ObjXYZ</objectName>
</validationErrors>
</FatalException>
</detail>
我可以使用以下代碼片段訪問消息“違反了業務政策”:
catch(FaultException e)
{
string ERRORMSG = e.Message
}
我不知道如何獲取validationErrors 數組數據。
任何幫助是極大的贊賞。
查看客戶端生成的代碼,查找與預期故障匹配的類型。 然后,您需要使用它來鍵入要捕獲的 FaultException,例如
catch(FaultException<YourExceptionType> e)
{
... // Access your custom fault properties
}
查看FaultException<TDetail>
的文檔以獲取更多示例。
您的服務似乎使用錯誤合同來包裝錯誤的詳細信息。 Fault 合約是一種自定義類型。 我們可以在客戶端使用 Try-Catch 語句來捕獲這種強類型。
此外,Fault Contract 和 Service Contract 在客戶端和服務之間共享,即在客戶端是已知的。 服務契約和故障契約也是通過添加服務引用生成的。
Try
{
}
catch (FaultException<FatalException> e)
{
FatalException fe = e.Detail;
Console.WriteLine(e.Message);
}
如果有什么我可以幫忙的,請隨時告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.