Asp.net mvc 2 我可以从global.asax重定向到控制器操作吗?

Asp.net mvc 2 我可以从global.asax重定向到控制器操作吗?,asp.net-mvc-2,c#-4.0,Asp.net Mvc 2,C# 4.0,当用户上载超过限制的文件时,我试图显示一个错误页面(请参阅) 在global.asax中,我想重定向到控制器操作,所以类似这样的操作,但它不起作用 private void Application_Error(object sender, EventArgs e) { if (GlobalHelper.IsMaxRequestExceededEexception(this.Server.GetLastError())) { this.Server.ClearErr

当用户上载超过限制的文件时,我试图显示一个错误页面(请参阅)

在global.asax中,我想重定向到控制器操作,所以类似这样的操作,但它不起作用

private void Application_Error(object sender, EventArgs e)
{
    if (GlobalHelper.IsMaxRequestExceededEexception(this.Server.GetLastError()))
    {
        this.Server.ClearError();
        return RedirectToAction("Home","Errorpage");
    }
}
试着这样做:

protected void Application_Error()
{
    var exception = Server.GetLastError();
    // TODO: Log the exception or something
    Response.Clear();
    Server.ClearError();

    var routeData = new RouteData();
    routeData.Values["controller"] = "Home";
    routeData.Values["action"] = "ErrorPage";
    Response.StatusCode = 500;
    IController controller = new HomeController();
    var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
    controller.Execute(rc);
}

我正在会话_Start()中使用上述代码。当身份验证失败时,我在重定向到authenticationfalure.aspx页面时使用它。但是,主页和失败页面都即将发布。如何解决这个问题?@Darin Dimitrov我如何将参数传递给action方法。我想以某种方式传递“exception”变量。@mathinvalidnik,您可以轻松地将异常作为RoutedData值传递,正如我在下面的回答中所说明的:@DarinDimitrov我将尝试这个。IController.Execute的奇怪之处在于它实际上并没有改变url。@DarinDimitrov感谢您的解决方案。我们需要定义状态码吗?如果我们这样做,我们会在谷歌网站管理员工具报告上看到它吗?