Что вам нужно, так это атрибут 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 без перенаправления.