Soru ASP.NET uygulamasının global.asax uygulamasında Application_Error ile çalışma


Uygulama çöktüğünde bir yöneticiye posta göndermek istiyorum. Bu yüzden bunu sadece global.asax:

void Application_error(object sender, EventArgs e)
{
    SendMessageToAdministarator(Server.GetLastError().ToString());
}

Ama aslında birçok kez Application_Error Uygulama çökmeyecek olsa bile çağrılır.

Ve uygulama çöktüğünde SADECE admin'e posta göndermek istiyorum.

Ayrıca, uygulamayı tekrar açmak için basit bir yol var mı?

En basit çözümü arıyorum.


25
2018-01-12 09:06


Menşei




Cevaplar:


Uygulama çökmediğinde ne tür hatalar gönderilir? İstisna türünü kontrol edebilir ve uygulamayı kilitlemeyen istisnalar için e-posta göndermeyebilirsiniz (örneğin, bir yönlendirme kodu manuel olarak filtrelediğim ThreadAbortException öğesini atabilir):

protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
    if (ex is ThreadAbortException)
        return;
    Logger.Error(LoggerType.Global, ex, "Exception");
    Response.Redirect("unexpectederror.htm");
}

Hata sayfası için kullanıcıya, bir hata oluştuğunu bildiren ve sitenin ilgili sayfalarına bağlanan bir bağlantı içeren bir yeniden yönlendirme ekleyebilirsiniz. Bu 'uygulamayı geri kaldır' içindir - umarım istediğin budur.

Ayrıca, sunucudaki hataları da kaydedebilen log4net ile giriş yapmaya bakabilirsiniz. ve e-postaları hatalara yolla.


53
2018-01-12 09:18



Çok teşekkür ederim. "Manüel olarak filtrelemek" ile ne demek istiyorsun? Ayrıca, bir Constanly elde etmek bir hata bazı System.Web.HttpException olduğunu: Dosya mevcut değil. System.Web.StaticFileHandler.ProcessRequestInternal (HttpContext bağlamında) ... ama bu fark edilir bir zarar vermez - Hanan
Cevabı bir kod örneği ile güncelledim. ThreadAbortException öğesini HttpException ile değiştirebilirsiniz. Veya daha fazla istisna türü için birden fazla kontrol var. - rslite