SORU
16 Aralık 2012, Pazar


Nasıl özel hata sayfaları ASP.NET MVC 4 iş yapmak için

Özel bir hata sayfası, 500, 404 ve 403 gösterilecek. Yaptığım şey şu:

1) web özel hatalar sağladı.aşağıdaki gibi config

<customErrors mode="On" 
   defaultRedirect="~/Views/Shared/Error.cshtml">

  <error statusCode="403" 
    redirect="~/Views/Shared/UnauthorizedAccess.cshtml" />

  <error statusCode="404" 
    redirect="~/Views/Shared/FileNotFound.cshtml" />

</customErrors>

2) aşağıdaki gibidir: FilterConfig Sınıf küresel eylem filtre olarak HandleErrorAttribute Kayıtlı

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new CustomHandleErrorAttribute());
        filters.Add(new AuthorizeAttribute());
    }

3) yukarıdaki mesajların her biri için özel bir hata sayfası Oluşturdu. 500 için varsayılan zaten kutunun dışında kullanılabilir.

4) sayfanın model System.Web.Mvc.HandleErrorInfo Her bir özel hata Sayfası görünümünde İlan etti

Özel hata sayfası gösterir 500 için. Başkaları için değil.

Kaçırdığım bir şey mi var?

Bu HandleErrorAttribute sınıf OnException yöntemi kodu ile okudum gibi özel görüntüleme hataları var ve sadece 500 işleyen değil gibi görünüyor.

Ben diğer hataları işlemek için ne var?

CEVAP
16 Aralık 2012, Pazar


Benim şu anki Kur (MVC3, ama hala geçerli bence) olması. o yüzden ErrorController,: bir kullanır

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

Kontrolör aşağıdakileri içerir:

public class ErrorController : Controller
{
    public ViewResult Index()
    {
        return View("Error");
    }
    public ViewResult NotFound()
    {
        Response.StatusCode = 404;  //you may want to set this to 200
        return View("NotFound");
    }
}

Ve görünümleri tıpkı onları uygulamak. Eğer uygulama hata ayıklama modunda ise mantık biraz olsa da, izleme ve hata bilgi yığını göstermek için eklemek eğilimindedir. Hata.cshtml şöyle görünür:

@model System.Web.Mvc.HandleErrorInfo
@{
    Layout = "_Layout.cshtml";
    ViewBag.Title = "Error";
}
<div class="list-header clearfix">
    <span>Error</span>
</div>
<div class="list-sfs-holder">
    <div class="alert alert-error">
        An unexpected error has occurred. Please contact the system administrator.
    </div>
    @if (Model != null && HttpContext.Current.IsDebuggingEnabled)
    {
        <div>
            <p>
                <b>Exception:</b> @Model.Exception.Message<br />
                <b>Controller:</b> @Model.ControllerName<br />
                <b>Action:</b> @Model.ActionName
            </p>
            <div style="overflow:scroll">
                <pre>
@Model.Exception.StackTrace
                </pre>
            </div>
        </div>
    }
</div>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008