Javascript ASP处理程序未向托管环境上的ajax调用返回错误消息
我有一个由ajax调用的处理程序,我从存储过程SQL返回错误 下面是我的ajax调用Javascript ASP处理程序未向托管环境上的ajax调用返回错误消息,javascript,jquery,asp.net,ajax,error-handling,Javascript,Jquery,Asp.net,Ajax,Error Handling,我有一个由ajax调用的处理程序,我从存储过程SQL返回错误 下面是我的ajax调用 $.ajax({ url: "Handlers/MyHandlerCall.ashx?QueCtrlType=1" contentType: "application/json; charset=utf-8", success: function (data)
$.ajax({
url: "Handlers/MyHandlerCall.ashx?QueCtrlType=1"
contentType: "application/json; charset=utf-8",
success: function (data) {
alert('ok')
},
error: function (e) {
alert(e.responseText) // Here i want error message from my Stored Procedure
}
})
这是我的MyHandlerCall.ashx
try
{
DataTable dt = //Database Call and return DataTable which is working fine
if (dt.Rows.Count > 0)
{
context.Response.Write('ok');
}
}
catch (Exception ex)
{
context.Response.StatusCode = 500;
context.Response.Write(ex.Message); // Passing error which works locally very fine but not on my hosted environment
}
我的SQL SP返回错误
IF (1)
BEGIN
RAISERROR('Invalid Call',16,1)
RETURN
END
它在本地返回正确的错误消息,但在托管环境中,它抛出的是内部服务器错误,而不是我的Sp消息。如果出现ajax错误,将执行回调。在您的例子中,ajax调用将成功执行并返回一个包含错误的响应。因此,您必须在成功回调中检查此错误: ASP.NET
catch (Exception ex)
{
context.Response.Write(string.Format("Error: {0}", ex.Message));
}
jQuery
$.ajax({
url: "Handlers/MyHandlerCall.ashx?QueCtrlType=1"
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.indexOf('Error') === 0) {
// Handle the SQL error
} else {
alert('ok');
}
},
error: function (e) {
alert(e.responseText)
}
})
问题是您的服务器正在显示默认错误消息 如果要显示自定义消息,请编写以下代码
context.Response.StatusCode = 500;
context.Response.TrySkipIisCustomErrors = true;
context.Response.Write('Message');
对于IIS7+,如果它在本地工作,但在托管服务器上不工作,那么这似乎是主机的配置问题。您需要检查错误并进行调试。鉴于你给我们的信息太少,这里没有人能帮你