public void OnException(ExceptionContext context) { if (_environment.IsDevelopment()) { context.ExceptionHandled = true; var mvcErrorModel = new MvcErrorModel(); ViewResult result; switch (context.Exception) { case SqlNullValueException: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir veritabanı hatası oluştu. Sorunu en kısa sürede çözeceğiz."; mvcErrorModel.Detail = context.Exception.Message; result = new ViewResult { ViewName = "Error" }; result.StatusCode = 500; _logger.LogError(context.Exception, context.Exception.Message); break; case NullReferenceException: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir null veriye rastlandı. Sorunu en kısa sürede çözeceğiz."; mvcErrorModel.Detail = context.Exception.Message; result = new ViewResult { ViewName = "Error" }; result.StatusCode = 403; _logger.LogError(context.Exception, context.Exception.Message); break; default: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir hata oluştu. Sorunu en kısa sürede çözeceğiz."; result = new ViewResult { ViewName = "Error" }; result.StatusCode = 500; _logger.LogError(context.Exception, "Bu benim log hata mesajım"); break; } result.ViewData = new ViewDataDictionary(_metadataProvider, context.ModelState); result.ViewData.Add("MvcErrorModel", mvcErrorModel); context.Result = result; } }
public void OnException(ExceptionContext context) { if (_environment.IsDevelopment()) { context.ExceptionHandled = true; var mvcErrorModel = new MvcErrorModel(); switch (context.Exception) { case SqlNullValueException: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir veritabanı hatası oluştu. Sorunu en kısa sürede çözeceğiz."; mvcErrorModel.Detail = context.Exception.Message; //ViewResult result1 = new ViewResult { ViewName = "Error" }; bu şekilde ayrı bir view ile de gösterilebilir. _logger.LogError(context.Exception, context.Exception.Message); break; case NullReferenceException: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir referans hatası oluştu. Sorunu en kısa sürede çözeceğiz."; mvcErrorModel.Detail = context.Exception.Message; _logger.LogError(context.Exception, context.Exception.Message); break; default: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir hata oluştu. Sorunu en kısa sürede çözeceğiz."; _logger.LogError(context.Exception, context.Exception.Message); break; } var result = new ViewResult { ViewName = "Error" }; result.StatusCode = 500; result.ViewData = new ViewDataDictionary(_metadataProvider, context.ModelState); result.ViewData.Add("MvcErrorModel", mvcErrorModel); context.Result = result; } }
// Hata üzerindeyiz public void OnException(ExceptionContext context) { if (_environment.IsDevelopment()) // Ürün aşamasında bu IsProduction olmalı { // Hata ele alındı demek context.ExceptionHandled = true; // Message tek olsa burada böyle tanımlardık var mvcErrorModel = new MvcErrorModel(); //{ // Message = // $"Üzgünüz, işleminiz sırasında beklenmedik bir hata oluştu. Sorunu en kısa sürede çözeceğiz." //}; ViewResult result; /*Resultı case içinde tanımlamak için*/ switch (context.Exception) { case SqlNullValueException: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir veritabanı hatası oluştu. Sorunu en kısa sürede çözeceğiz."; result = new ViewResult { ViewName = "Error" }; mvcErrorModel.Detail = context.Exception.Message; result.StatusCode = 500; _logger.LogError(context.Exception, context.Exception.Message); break; case NullReferenceException: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir null hatası oluştu. Sorunu en kısa sürede çözeceğiz."; result = new ViewResult { ViewName = "Error" }; mvcErrorModel.Detail = context.Exception.Message; // result = new ViewResult { ViewName = "Error2" }; result.StatusCode = 403; _logger.LogError(context.Exception, context.Exception.Message); break; default: mvcErrorModel.Message = $"Üzgünüz, işleminiz sırasında beklenmedik bir hata oluştu. Sorunu en kısa sürede çözeceğiz."; result = new ViewResult { ViewName = "Error" }; result.StatusCode = 403; _logger.LogError(context.Exception, "Bu benim log hata mesajım!"); break; } // Hata durumununda dönülecek view //result.StatusCode = 500; // ViewData'ya gerekli modelstatei aktarma, bu modelstate bizim mvcErrorModeli taşıyacak? result.ViewData = new ViewDataDictionary(_metadataProvider, context.ModelState); // ViewData'ya MvcErrorModel'i de gönderiyoruz result.ViewData.Add("MvcErrorModel", mvcErrorModel); // Hata'nın doğası gereği olaya ortadan dahil olduğumuz için View döndürme işlemi, view'ın adım adım oluşturulması şeklinde gerçekleşiyor context.Result = result; } }