Özel Hata İşleme Application_Error ASP.NET MVC Küresel.asax?
MVC benim uygulama hataları belirlemek için bazı temel kod var. Şu anda projem için bir kumanda Error
denilen eylem yöntemleri HTTPError404()
, HTTPError500()
General()
var. Onlar 7* *string bir parametre olarak kabul ediyor. Ya da aşağıdaki kodu kullanarak değiştirme.
İşlem için Hata kontrol cihazına veri aktarmak için en iyi/uygun yol nedir? Mümkün olduğunca sağlam bir çözüm istiyorum.
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
if (httpException != null)
{
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Error");
switch (httpException.GetHttpCode())
{
case 404:
// page not found
routeData.Values.Add("action", "HttpError404");
break;
case 500:
// server error
routeData.Values.Add("action", "HttpError500");
break;
default:
routeData.Values.Add("action", "General");
break;
}
routeData.Values.Add("error", exception);
// clear error on server
Server.ClearError();
// at this point how to properly pass route data to error controller?
}
}
CEVAP
Bunun için yeni bir rota oluşturmak yerine, sadece denetleyici/eylem Yönlendirme ve sorgu dizesi yoluyla bilgi verir misin? Örneğin:
protected void Application_Error(object sender, EventArgs e) {
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
if (httpException != null) {
string action;
switch (httpException.GetHttpCode()) {
case 404:
// page not found
action = "HttpError404";
break;
case 500:
// server error
action = "HttpError500";
break;
default:
action = "General";
break;
}
// clear error on server
Server.ClearError();
Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message));
}
Sonra kumandanızı istediğiniz her şeyi alacaksınız:
// GET: /Error/HttpError404
public ActionResult HttpError404(string message) {
return View("SomeView", message);
}
Senin yaklaşımında bazı artıları ve eksileri vardır. Hata işleme bu tür bir döngü içinde çok çok dikkatli olun. ASP.NET boru hattı ile 404, tüm nesne oturumu yaratacak bir kolu olduğundan bu hit bu başka bir şey. Bu bir sorun (performans) yoğun olarak kullanılan sistemler için olabilir.
jQuery Ajax hata işleme, Haritayı özel...
Javascript küresel hata işleme...
Nasıl küresel iPhone özel Durum İşleme...
Node.js express.js uygulamalar için ha...
Node.js En İyi Özel Durum İşleme Uygul...