【问题标题】:ASP Handler not returning error message to ajax call on hosted environmentASP 处理程序不向托管环境上的 ajax 调用返回错误消息
【发布时间】:2018-07-30 17:20:27
【问题描述】:

我有一个由 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


        }

My SQL SP 返回错误

IF (1)  
BEGIN  
 RAISERROR('Invalid Call',16,1)  
 RETURN  
END  

它在本地返回正确的错误消息,但在托管环境中它抛出的是内部服务器错误而不是我的 Sp 消息

【问题讨论】:

  • 鉴于它在本地工作但不在您的托管服务器上,那么这似乎是您的主机的配置问题。您需要检查错误是什么并进行调试。鉴于您提供给我们的信息不足,这里没有人可以帮助您

标签: javascript jquery asp.net ajax error-handling


【解决方案1】:

error 回调将在 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)
   }
  })

【讨论】:

    【解决方案2】:

    问题是您的服务器显示默认错误消息 如果要显示自定义消息,请编写以下代码

            context.Response.StatusCode = 500;
            context.Response.TrySkipIisCustomErrors = true;
            context.Response.Write('Message');
    

    对于 IIS7+

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多