Şimdi Ara

Asp.NET MVC Hata Sayfası Yönlendirme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
2
Cevap
0
Favori
1.172
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar. Asp.NET MVC projemde hata sayfası yönlendirmede takıldığım bir nokta oldu.
    Site ana dizini siteadi.com/Haber/Index

    Takıldığım yer siteadi.com/hebele veya siteadi.com/Haber/Detay/hebele yazıldığında 404 sayfasına yönlendiriliyor. Ancak siteadi.com/Haber/Detay/hebele/yanlisadres (yani bir dizin daha eklediğimde ) veyahut özellikle yapmak istediğim siteadi.com/deneme.html gibi html uzantısı yazıldığında yönlendirmeyi yapamadım. Stackoverflow'da epey araştırdım baya da bir şeyler buldum ancak yine de istediğimi yapamadım. Kodlarımı yazsam en azından fazla gereksiz yazılan kodların hangileri olduğunu ve bu söylediğim yapıyı sağlamak için nasıl bir yol izlemem gerektiğini söylerseniz memnun olurum şimdiden çok teşekkürler.

    ErrorController

    public class ErrorController : Controller
    {
    // GET: Error
    public ActionResult PageError(Exception exception)
    {
    Response.TrySkipIisCustomErrors = true;
    return View();
    }
    public ActionResult Page404()
    {
    Response.StatusCode = 404;
    Response.TrySkipIisCustomErrors = true;
    return View();
    }
    public ActionResult Page403()
    {
    Response.StatusCode = 403;
    Response.TrySkipIisCustomErrors = true;
    return View();
    }
    }


    Views altındaki web.config e eklediğim kodlar

    <system.webServer>
    <handlers>
    <remove name="BlockViewHandler"/>
    <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>

    <httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" subStatusCode="-1"/>
    <error statusCode="404" path="Error/Page404" responseMode="ExecuteURL"/>
    <remove statusCode="403" subStatusCode="-1"/>
    <error statusCode="403" path="Error/Page403" responseMode="ExecuteURL"/>
    </httpErrors>
    </system.webServer>

    <system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="Error">
    <error statusCode="404" redirect="Page404"/>
    <error statusCode="403" redirect="Page403"/>
    </customErrors>
    </system.web>


    Global.asax

    protected void Application_EndRequest()
    {
    if (Context.Response.StatusCode == 404)
    {
    Response.Clear();

    var rd = new RouteData();
    rd.Values["controller"] = "Error";
    rd.Values["action"] = "Page404";

    IController c = new ErrorController();
    c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
    }
    else if (Context.Response.StatusCode == 403)
    {
    Response.Clear();

    var rd = new RouteData();
    rd.Values["controller"] = "Error";
    rd.Values["action"] = "Page403";

    IController c = new ErrorController();
    c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
    }
    }


    RouteConfig te ve FilterConfig te ayar yapılmadı. Application_Error da da aynı şekilde bir şey yazmadım.







  • Sonunda aradığımı burada buldum. Gelecekte aynı sorunu yaşayabilecek arkadaşlar için paylaşıyorum.

    Stackoverflow linki :http://stackoverflow.com/a/5507125/7729309

    github :https://github.com/chuchuva/Test404
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.