jquery ajax未正确捕获c#异常

rob*_*ert 9 c# ajax jquery exception

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

在我的本地机器上的开发环境中,当jquery ajax调用webservice [webmethod]并且webmethod抛出一个特定的错误时,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";
}
Run Code Online (Sandbox Code Playgroud)

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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

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

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

本地环境是Windows 7家庭高级版,IIS 7.5.7600.16385

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

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

*********只需跟进.. tnx Justin *************

我在services文件夹中添加了web.config文件(Doh ...想知道为什么我没想到这个)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
      <customErrors mode="Off" />
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 14

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

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

但是,如果必须,您可以更改:

<customErrors mode="RemoteOnly" />
Run Code Online (Sandbox Code Playgroud)

至:

<customErrors mode="Off" />
Run Code Online (Sandbox Code Playgroud)

如果要显示Services文件夹的错误:

<location Path="/Services">
    <system.web>
        <customErrors mode="Off" />
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)