【发布时间】:2012-02-22 01:49:08
【问题描述】:
好的,我对生产环境以及 jquery ajax 如何捕获错误有问题。
在我本地机器上的开发环境中,当 jquery ajax 调用 web 服务 [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";
}
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 的 windows 7 家庭高级版
生产环境为 Windows Server 2008 R2,IIS 7.5.7600.16385(与开发环境相同)
为什么会有差异,如何让生产环境抛出具体的错误?
********* 关注up .. tnx 贾斯汀 *************
我在 services 文件夹中添加了 web.config 文件(Doh...想知道为什么我没有想到这个)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off" />
</system.web>
</configuration>
【问题讨论】:
-
检查 web.config 的
<customErrors>部分。通常不希望向最终用户公开异常详细信息。 -
对...但是有没有办法只为 Web 服务启用此功能?目前是 RemoteOnly
-
这和我很久以前在这里stackoverflow.com/questions/8059780/…发布的问题完全相同
-
您可以使用
<location>元素指定它仅适用于Web 服务,至少如果您将它们放在单独的文件夹中。我从来没有尝试过没有单独的文件夹。