Я пытался исправить свою ошибку обработки для MVC немного и реализовано решение Марко здесь:
ASP.NET MVC 404 Error Handling404 пузыри ошибок через MVC контроллер ошибок
Это отлично работает на моей рабочей станции Win7. Но по какой-то причине он не работает на сервере. Некоторые ошибки работают нормально, но, например, если я вызываю контроллер и маршрут, которого не существует, я получаю стандартную страницу IIS 404.
Я поместил несколько журналов и вызывается и выполняется Error404Controller, но по какой-то причине обработка не останавливается и после этого загружает страницу ошибки IIS 404.
Это код в моем global.asax
protected void Application_EndRequest()
{
if (Context.Response.StatusCode == 404)
{
Response.Clear();
var rd = new RouteData();
rd.Values["controller"] = "Error404";
rd.Values["action"] = "Index";
IController c = new SuperMvc.Controllers.Error404Controller();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
}
И это контроллер:
[AcceptVerbs(HttpVerbs.Get)]
public virtual ActionResult Index()
{
log.Error("Error404Controller.Index");
PageError error = new PageError();
error.Url = Request.Url.AbsoluteUri;
log.Error("Request.Url=" + error.Url);
error.UrlReferrer = Request.UrlReferrer.AbsoluteUri;
log.Error("Request.UrlReferrer=" + error.Url);
return View(error);
}
Любые идеи? Я проверил файлы web.config и не могу найти разницы.
Когда вы пытаетесь контроллер/действие, которое не существует, вы вошли код статуса? Это определенно 404 к тому времени, когда он доберется до этой точки? (Я думаю, что иногда я использовал, чтобы получить бла, не реализует IController - это будет код 500) – Carl
Нет, я получаю код ответа 404 в Application_EndRequest и вызывается Error404Controller, но я все еще получаю IIS 404 вместо моей. – Remy