Asp.net mvc 2 我可以从global.asax重定向到控制器操作吗?
当用户上载超过限制的文件时,我试图显示一个错误页面(请参阅) 在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
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感谢您的解决方案。我们需要定义状态码吗?如果我们这样做,我们会在谷歌网站管理员工具报告上看到它吗?