在MVC中,定义了customErrors路径在statusCode 404上,它按预期工作但在404之前返回状态代码302。
我们可以避免临时重定向吗?
答案 0 :(得分:0)
您正在寻找的是web.config的customErrors标记上的属性redirectMode =“ResponseRewrite”。不幸的是,它只适用于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操作而不进行重定向。