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)
| 归档时间: |
|
| 查看次数: |
10279 次 |
| 最近记录: |