簡體   English   中英

處理WCF故障信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM