Özel asp.net MVC3 hata sayfaları
MVC3 temel bir web sitesi geliştiriyorum ve hata her türlü hata ve Render özel Görünümler işleme için bir çözüm arıyorum. Hele, bu bir "Hata" Kumanda nerede onun ana eylem "Dizin" (genel hata sayfası) ve bu denetleyici olacak bir kaç eylemleri için hatalar görünebilir kullanıcı gibi "Handle500" veya "HandleActionNotFound".
Web sitesinde meydana gelebilecek her hata bu "Hata" (örnek: "" veya "Eylem" değil, 500, 404, dbException, vb. Denetleyici Denetleyici tarafından ele olabilir
Site Haritası dosyası web sitesi yolları (ve yol) tanımlamak için kullanıyorum.
Bu soruya zaten cevap oldu, bu Gweebz bir yanıt
Son applicaiton_error benim yöntem şudur:
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}
CEVAP
İşte özel hataları nasıl ele aldığım bir örnek. Ben eylemleri farklı HTTP hataları işleme ErrorsController
tanımlayın:
public class ErrorsController : Controller
{
public ActionResult General(Exception exception)
{
return Content("General failure", "text/plain");
}
public ActionResult Http404()
{
return Content("Not found", "text/plain");
}
public ActionResult Http403()
{
return Content("Forbidden", "text/plain");
}
}
ve sonra Global.asax
Application_Error
için üye oldum ve bu denetleyici çağırmak:
protected void Application_Error()
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "Http403";
break;
case 404:
routeData.Values["action"] = "Http404";
break;
}
}
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
Nasıl özel hata sayfaları ASP.NET MVC ...
Özel Silex & Dal yardımcıları hata say...
ASP.NET özel hata sayfası - Sunucu.() ...
Neden&; Sunucusu için ağ ile ilgili ve...
Bu XML hata ne anlama geliyor: "Ö...