2010-03-04 23 views
7

Benim web.configASP.NET MVC Özel Hata sayfası (StatusCode 404, bir 500 atar)

<customErrors mode="On" defaultRedirect="/Error/GeneralError"> 
    <error statusCode="404" redirect="/Error/NotFound"/> 
</customErrors> 

içinde set customErrors var Bu yerel gayet iyi çalışıyor. Bir 404, 404'ü atar. Paylaşılan barındırmada, 404'ü/Error/NotFound'u işaret edecek şekilde ayarlamadığım sürece, standart sunucu 404 sayfasını atar. Bu iyi. Şimdi yanıt durumu kodu 200 olan özel 404 sayfasını gösterecektir. Bu yüzden Response.StatusCode = 404; ErrorController'daki NotFound eylemimde şöyle:

public class ErrorController : Controller 
{ 
    public ActionResult NotFound() 
    { 
     Response.StatusCode = 404; 
     return View(); 
    } 
} 

sunucu bir durum kodu atar 500 Dahili Sunucu Hatası, ancak GeneralError sayfam gösterilmiyor, sadece kaynaksız boş bir sayfa.

Birçok farklı kombinasyon denedim ancak 404 yanıtıyla birlikte özel 404 sayfamı nasıl gösterebileceğimi bulamıyorum.

Herhangi bir fikir?

+0

NotFound'da 200 OK ile yanıt vermesine izin verme konusunda herhangi bir zarar var mı? Web'de gezinme veya google web yöneticisi araçlarıyla ilgili sorunlar olabilir. – mark123

+0

Sadece bir düşünce. Kullanılması daha iyi olmaz: defaultRedirect = "~/Error/GeneralError" ve ve yönlendirme = "~/Error/NotFound" MVC uygulamalarıyla. (Dizelerin başlangıcında ~ dikkat edin. Bu, uygulamanın tabanına, zaten bildiğiniz gibi, etki alanının tabanını göstermeyecektir.) – jwwishart

cevap

1

customErrors öğelerini kullanmayın (yerel sınama için mode="On"'u döndürme dışında). Bunun yerine, MvcApplication numarasına Marco's Better-Than-Unicorns MVC 404 Answer için Application_EndRequest yöntemini ekleyin.

İlgili konular