Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }