jquery ajax未正确捕获c#异常

本文关键字:异常 ajax jquery | 更新日期: 2023-09-27 18:25:26

好的,我对生产环境以及jquery ajax如何捕获错误有问题。

在我本地机器上的开发环境中,当jquery ajax调用Web服务[webmethod],并且Web方法抛出特定错误时,jquery ajax会正确地捕获该错误,但在生产环境中,jquery ajax会捕获错误,但消息是通用的"处理请求时出错",带有"内部服务器错误"

例如

c代码

[WebMethod]
public String dostuff(String Auth){
// some code here
// if error occurs
throw new Exception("Some specific error message");
return "ok";
}

jquery ajax调用

    var data = JSON.stringify({ Auth: "some data here" }, null);
    $.ajax({
        type: "POST",
        url: '/Services/memberService.asmx/dostuff',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            alert(result.d); // alert ok
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("responseText=" + XMLHttpRequest.responseText + "'n textStatus=" + textStatus + "'n errorThrown=" + errorThrown);
        }
    });

在我的本地机器上,XMLHttpRequest.responseText"某些特定错误消息"

在生产环境中,XMLHttpRequest.responseText"处理请求时出错。"

本地环境是带有IIS 7.5.7600.16385 的windows7家庭高级版

生产环境是带有IIS 7.5.7600.16385的Windows Server 2008 R2(与开发环境相同)

为什么会产生差异以及如何使生产环境抛出特定的错误?

************只是一个后续行动。。tnx Justin

我在服务文件夹中添加了web.config文件(Doh…想知道为什么我没有考虑这个)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
      <customErrors mode="Off" />
    </system.web>
</configuration>

jquery ajax未正确捕获c#异常

默认情况下,.NET应用程序配置为仅向本地服务器显示特定的异常信息。

这样,攻击者就无法根据其攻击获取有关您网站的特定异常信息。改变这种行为通常被认为是个坏主意。

如果必须的话,你可以改变:

<customErrors mode="RemoteOnly" />

收件人:

<customErrors mode="Off" />

如果你想显示服务文件夹的错误:

<location Path="/Services">
    <system.web>
        <customErrors mode="Off" />
    </system.web>
</location>