如何从全局传递异常.转到另一个控制器

本文关键字:另一个 控制器 异常 全局 | 更新日期: 2023-09-27 18:04:29

我使用Application_Error方法来处理和记录异常。我需要从全局传递异常。错误控制器

I tried

this.Session["w"] = (Exception)exception; 

但这不起作用

我的代码是这样的:

protected void Application_Error(Object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    if (exception != null)
    {
        this.Session["w"] = (Exception)exception;
        Server.ClearError();
        ExceptionManager.LogExceptionToTextFile(exception);
        ExceptionManager.LogExceptionToEmail(exception);
        if (!Response.IsRequestBeingRedirected)
            Response.Redirect("~/Error/Index");
    }
}

如何从全局传递异常.转到另一个控制器

你可以试试这样

Exception exception = Server.GetLastError();
 string errorId = Guid.NewGuid().ToString();
    if (exception != null)
    {
        this.Application.Lock();
        this.Application[errorId] = exception;
        this.Application.Unlock();
        Server.ClearError();
        ExceptionManager.LogExceptionToTextFile(exception);
        ExceptionManager.LogExceptionToEmail(exception);
        if (!Response.IsRequestBeingRedirected)
            Response.Redirect("~/Error/Index?errorId="+errorId);
    }

和误差控制器

var Exception = (Exception)Application[Request["errorId"]]
编辑:

如果您想使用会话,您可能还需要替换

Response.Redirect("~/Error/Index");

Response.Redirect("~/Error/Index", false);

丢失会话的原因是由于线程取消。你可以在什么时候我应该使用回应中了解更多。重定向(url,真的)?: