繁体   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