使用 ELMAH 处理来自 json 请求的异常

发布于 2024-09-29 08:16:07 字数 1233 浏览 3 评论 0原文

我正在使用 ELMAH 来处理我的 MVC 项目中的异常。一切工作正常,除了请求是 ajax 请求时。

捕获并记录异常,但是当我对错误页面执行response.redirect 时,重定向不会发生,并且错误消息显示在同一页面上,与现有内容重叠。

这是代码:

这是捕获异常的 elmah 代码。如果它是 Ajax 请求,我分配值“Y”

    if (context.HttpContext.Request.IsAjaxRequest())
    {
        context.HttpContext.Session["IsAjax"] = "Y";
    }
    var e = context.Exception;
    if (!context.ExceptionHandled
                     || RaiseErrorSignal(e) 
                            || IsFiltered(context))
                        return;
     LogException(e);

并且在我的全局 asax 文件中

,在 ErrorLog_Logged 方法中,我将从 ELMAH 返回的 GUID 存储在会话变量中以供稍后使用 向用户显示 id,以便他们可以邮寄 GUID,我可以看到针对数据库中相应的 elmah 表查询 GUID 的异常。

     protected void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args)
     {
             var id = args.Entry.Id;
             Session["ErrorId"] = id.ToString();
     }

在 application_Error 方法中,我执行以下操作

     protected void Application_Error( object sender, EventArgs e )
    {
        Response.Redirect("/Error/Index");
    }

我做错了什么。重定向不起作用,并且错误消息显示在现有页面的顶部。

我现有的页面有一堆 jquery 选项卡。

我真的无法理解这个问题。如果有人知道答案,我将不胜感激。

请帮忙。

提前致谢。

I am using ELMAH to handle expception in my MVC project. All is working fine, except for when the request is an ajax request.

The exception is captured and logged but when I do a response.redirect to the error page, the redirect doesn't happen and the error message is displayed on the same page, overlapping the existing content.

Here is the code :

this is the elmah code to catch exceptions. I assign the value "Y" if it's an Ajax request

    if (context.HttpContext.Request.IsAjaxRequest())
    {
        context.HttpContext.Session["IsAjax"] = "Y";
    }
    var e = context.Exception;
    if (!context.ExceptionHandled
                     || RaiseErrorSignal(e) 
                            || IsFiltered(context))
                        return;
     LogException(e);

And in my Global asax file

In the ErrorLog_Logged method I store the GUID returned from ELMAH in a session variable to later
display the id to the user so they can mail the GUID and I can see the exception quering the GUID against the appropriate elmah table in the database.

     protected void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args)
     {
             var id = args.Entry.Id;
             Session["ErrorId"] = id.ToString();
     }

and in the application_Error method I do the following

     protected void Application_Error( object sender, EventArgs e )
    {
        Response.Redirect("/Error/Index");
    }

What am I doing wrong. The redirect doesn't work and the error message is displayed on top of the existing page.

My existing page has a bunch of jquery tabs.

I really can't get my head around this. If anyone knows the answer, I will greatly apprecite it.

Please help.

Thanks in advance.

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文