javascript - 如何在AJAX错误方法中检索DbContext SqlException?

标签 javascript c# ajax entity-framework

假设我有一个在向数据库列添加值时不受尊重的检查约束,或者假设我有一个使用 RAISEERROR 和自定义消息的触发器。

在我的 WebMethod 中,我使用 SqlException 来捕获更新数据库时的任何错误。因此,如果不遵守检查约束,我应该能够检索自动 SQL Server 错误消息,或者如果触发器引发错误消息,我应该能够检索我的自定义消息,对吗?

我该怎么做?

以下是我尝试过的:

[WebMethod]
public string AddData(entity e)
{
   using(var context = new DB_ENTITY_DbContext())
   {
       try
       {
           context.entity.Add(e);
           context.SaveChanges();
           return "success";
       }
       catch(SqlException ex)
       {
           return "My custom message " + ex.Message;
       }
   }
}

Javascript代码

function AddData()
{
    $.ajax({

    // Some other settings
    error: function (xhr, status, error){
            alert(JSON.parse(xhr.responseText).Message);
            alert(error);
        }    
    });
}

此处错误不返回

"My Custom message .....(and some auto generated message)"....

它返回“内部服务器错误”..

知道我应该做什么吗?

最佳答案

那是因为您捕获了异常,并返回一个简单的字符串。理论上,您的 WebMethod 永远不会失败...(它会失败,但您指示 WebMethod 永远不会通知异常)。这就是为什么你的 ajax 调用永远不会到达错误函数。

通过捕获异常来封装和隐藏错误是一个坏主意。封装并抛出不同的异常,或者只是简单地删除try/catch block

关于javascript - 如何在AJAX错误方法中检索DbContext SqlException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257081/

相关文章:

javascript - 调试 HTML 时,有没有办法使用 JavaScript 或 jQuery 监听 div 宽度变化?

javascript - Vue.js 中内容分布的表未正确渲染

javascript - 使用 ui-router 和 Angularjs 自动滚动到 TOP

c# - Unity Raycast 问题

c# - "Out"参数(引用)与 Action<>

php - 如何将项目/帖子添加到收藏夹

jquery - 如何使用 jQuery 使用图标作为通过/失败指示器进行表单验证?

javascript - jquery加载简单数据

c# - 在 ASP.NET Core 中从 ActionExecutionContext 的 HttpContext 中获取 RawBody

javascript - 使用带有按键事件的原型(prototype)函数