Могу ли я перенаправить из global.asax в действие контроллера? - PullRequest
12 голосов
/ 15 июля 2011

Я пытаюсь показать страницу ошибки, когда пользователь загружает файл, размер которого превышает ограничение (см. Перехват "Превышена максимальная длина запроса" )

в global.asax iхотите перенаправить на действие контроллера, так что-то вроде этого, но это не работает?:

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

1 Ответ

23 голосов
/ 15 июля 2011

Попробуй так:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...