gpt4 book ai didi

jquery - jquery调用wcf服务时获取异常信息

转载 作者:行者123 更新时间:2023-12-01 00:09:23 26 4
gpt4 key购买 nike

我正在从 jquery ajax 调用 WCF 服务。有时,服务会抛出一些自定义错误,当出现这种情况时,我需要获取该错误的消息。在我的 ajax 调用的错误函数中,我有以下代码:

            error: function(data) {
alert("responseText: " + data.responseText);
}

抛出错误时的响应文本如下所示:

responseText: {"ExceptionDetail":{"HelpLink":null,"InnerException":null,"Message":"Denied",......}}

我想从“ExceptionDetail”获取“Message”,但我不知道该怎么做。

我的 WCF 服务如下所示,为了测试它,我只是抛出一个错误:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public string myFunction(string id)
{
throw new Exception("Denied");
}

如何获取错误消息?

最佳答案

默认情况下,WCF 将返回任何异常详细信息 - 这是设计时想要的功能,以免向可能的攻击者泄露太多信息。

如果您想启用详细的异常消息,您可以通过在服务器端启用行为来实现:

 <system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="debugBehavior">
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>

<services>
<service name="YourService"
behaviorConfiguration="debugBehavior">
.....
</service>
</services>

但即使是现在 - 您需要意识到 WCF 应该是可互操作的,因此客户端可能不在 .NET 上运行 --> 因此您不能只是简单地抛出异常 - 这是 .NET 特定的构造。

您的最佳选择是捕获服务器上的所有异常(例如使用 IErrorHandler 接口(interface)),并将它们转换为 SOAP 错误 - .NET 异常的可互操作等效项。如果您知道另一端始终是 .NET 客户端,则可以轻松地将 .NET 异常转换为 FaultException<T>其中 T 是您的 .NET 异常。

执行此操作时,您可以通过捕获 FaultException<T> 来捕获客户端上的异常。 ,及其 .Detail属性应包含您所知的正常 .NET 异常(并且包含带有异常消息的 .Message 属性)。

关于jquery - jquery调用wcf服务时获取异常信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com