2011-07-15 109 views
12

我試圖顯示錯誤頁面,用戶上傳一個文件,該文件是超過極限時(見Catching "Maximum request length exceeded"我可以從global.asax重定向到控制器操作嗎?

在我想重定向到一個控制器動作在Global.asax,所以像thisbut它不工作:

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

回答

23

嘗試這樣的:

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); 
} 
+0

我在在session_start使用上面的代碼()。當身份驗證失敗時,我正在使用它,同時重定向到authenticationfalure.aspx頁面。但是,主頁和失敗頁面都是即將推出的。如何解決這個問題? –

+0

@Darin Dimitrov如何將參數傳遞給操作方法。我想以某種方式傳遞「異常」變量。 – mathinvalidnik

+1

@mathinvalidnik,你可以輕鬆地傳遞異常作爲RouteData值,如我在這個答案中說明:http://stackoverflow.com/a/5229581/29407 –

相關問題