Asp.NET MVC Hata Sayfası Yönlendirme (Tüm Sürüm)
Tüm Forumlar >> Web Tasarım - Programlama >> Yazılım Geliştirme >> Asp / Asp.NET
Mesaj
alpmirza => Asp.NET MVC Hata Sayfası Yönlendirme (21.4.2017 16:02:26)
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.

alpmirza => Asp.NET MVC Hata Sayfası Yönlendirme (21.4.2017 23:50:28)
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]