Asp.net mvc 在抛出404之前,是否有避免302重定向的方法?

Asp.net mvc 在抛出404之前,是否有避免302重定向的方法?,asp.net-mvc,http-status-code-404,Asp.net Mvc,Http Status Code 404,在MVC中,在状态码404上定义的customErrors路径,该路径按预期工作,但返回404之前的状态码302 我们可以避免这种临时重定向吗?您要查找的是web.config的customErrors标记上的属性redirectMode=“ResponseWrite”。不幸的是,它只适用于aspx,而不适用于ASP.NET MVC 因此,为了在MVC中实现您想要的功能,您必须处理错误以编写您想要的响应 在Global.asax.cs中: protected void Application_E

在MVC中,在状态码404上定义的customErrors路径,该路径按预期工作,但返回404之前的状态码302


我们可以避免这种临时重定向吗?

您要查找的是web.config的customErrors标记上的属性redirectMode=“ResponseWrite”。不幸的是,它只适用于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错误,并在ErrorsController上调用操作Error404,而无需重定向