Есть ли способ избежать перенаправления 302 до 404? - PullRequest
0 голосов
/ 04 июня 2018

В MVC определен путь customErrors На statusCode 404, который работает как положено, но возвращает код состояния 302 до 404.

Можем ли мы избежать этого временного перенаправления?

1 Ответ

0 голосов
/ 04 июня 2018

Что вам нужно, так это атрибут redirectMode = "ResponseRewrite" в теге customErrors файла web.config.К сожалению, он работает только с aspx и не работает для ASP.NET MVC.

Так что для достижения того, что вы хотите в MVC, вы должны обработать ошибку, чтобы написать желаемый ответ.

в Global.asax.cs:

protected void Application_Error(object sender, EventArgs e)
{
    HttpException httpException = Server.GetLastError().GetBaseException() as HttpException;

    if (httpException != null)
    {
        if (httpException.GetHttpCode() == 404)
        {
            RouteData routeData = new RouteData();
            Response.Clear();
            Server.ClearError();
            routeData.Values.Add("controller", "Errors");
            routeData.Values.Add("action", "Error404");
            var requestContext = new RequestContext(new HttpContextWrapper(Context), routeData);
            var controller = ControllerBuilder.Current.GetControllerFactory().CreateController(requestContext, "Errors");

            controller.Execute(requestContext);
        }
    }
}

этот код будет обрабатывать ошибку 404 и вызывать действие Error404 на контроллере ErrorsController без перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...