在 MVC 3 中捕获正确 JSON 格式的错误时,如何使用 ELMAH 记录错误

发布于 2024-12-11 22:41:49 字数 604 浏览 0 评论 0原文

我有一个 ASP.NET MVC 3 应用程序,我正在其中进行 AJAX 调用并期望返回 JSON 结果。我正在使用 ELMAH 来记录错误。在测试时我遇到了意外错误。 ELMAH 记录了错误,但我的客户端脚本没有记录,因为结果现在不是正确的 JSON。如果我处理控制器中的所有错误以返回正确的 JSON 结果,则 ELMAH 不会记录该错误。我知道我可以专门调用 ELMAH 来记录错误,但我更喜欢这样,我不必在其他任何地方这样做。

谁能澄清处理这种情况的“正确”方法?

例如

    try
{
                //service.dosomethingwitherror();
    return new JsonResult { Data = new { result = true, message = "Success." } };
}
catch (Exception ex)
{
    return new JsonResult { Data = new { result = true, message = "Failed." } };
}

,由于我正在“处理”此问题,所以 ELMAH 不会记录。如果我不处理这个问题,我的客户端将不会收到 JSON...

I have an ASP.NET MVC 3 application where I'm making an AJAX call and expecting a JSON result back. I'm using ELMAH to log errors. While testing I had an unexpected error. ELMAH logged the error, but my client side script doesn't because the result is not proper JSON now. If I handle all errors in the controller to return a proper JSON result, then the error doesn't get logged by ELMAH. I know I can call ELMAH specifically to log the error, but I rather like that I don't have to do that anywhere else.

Can anyone clarify the 'proper' way to handle this scenario?

for example

    try
{
                //service.dosomethingwitherror();
    return new JsonResult { Data = new { result = true, message = "Success." } };
}
catch (Exception ex)
{
    return new JsonResult { Data = new { result = true, message = "Failed." } };
}

Since I'm 'handling' this, ELMAH doesn't log. If I don't handle this my client won't get JSON...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灰色世界里的红玫瑰 2024-12-18 22:41:49

您可以使用 ErrorSignal 类手动记录。这将执行所有配置的 elmah 操作(日志、邮件、推文等)。

ErrorSignal.FromCurrentContext().Raise(new NotSupportedException());

请参阅 http://code.google.com/p/elmah/wiki/DotNetSlackersArticle# Signaling_errors 了解更多信息。

如果您确实不喜欢将该代码添加到控制器中,则无法捕获服务器端的异常并在 JavaScript 中处理 ajax 错误事件。

You can use the ErrorSignal class to log manually. This will perform all configured elmah operations (log, mail, tweet, etc).

ErrorSignal.FromCurrentContext().Raise(new NotSupportedException());

See http://code.google.com/p/elmah/wiki/DotNetSlackersArticle#Signaling_errors for more information.

If you really don't like adding that code to your controller, you could not catch the exception server side and handle the ajax error event in your javascript.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文