Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP处理程序未向托管环境上的ajax调用返回错误消息_Javascript_Jquery_Asp.net_Ajax_Error Handling - Fatal编程技术网

Javascript ASP处理程序未向托管环境上的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调用的处理程序,我从存储过程SQL返回错误

下面是我的ajax调用

                $.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+

,如果它在本地工作,但在托管服务器上不工作,那么这似乎是主机的配置问题。您需要检查错误并进行调试。鉴于你给我们的信息太少,这里没有人能帮你