示例#1
0
        public async Task <IActionResult> Index()
        {
            IExceptionHandlerPathFeature handler = HttpContext
                                                   .Features.Get <IExceptionHandlerPathFeature>();
            string message = "متاسفیم که عملیات با مشکل مواجه شده. بهتره به خانه برگردین! :)";

            if (handler != null)
            {
                string    requestPath = handler.Path;
                Exception exception   = handler.Error;
                var       errorData   = new CreateErrorLogDto {
                    Exception  = exception,
                    StatusCode = 0,
                    RequestUrl = requestPath
                };

                try {
                    //If database is not availabe, we must catch exception and log error in a diffrent storage
                    await _errorLogService.CreateAsync(errorData);
                }
                catch (Exception ex) {
                    //Log error in another storage,
                    //instead of Database, because database is not available.
                    Console.WriteLine($"Fatal-Error: {ex.GetBaseException().Message}");
                    return(await Task.FromResult(
                               View(new ErrorViewModel {
                        Message = message,
                        Help = ex.GetBaseException().Message,
                        ReturnUrl = _ReturnUrl
                    })
                               ));
                }

                var routeVlaues = new RouteValueDictionary {
                    { "controller", "Home" },
                    { "action", "Index" }
                };
                var model = new ErrorViewModel {
                    Message   = message,
                    ReturnUrl = _ReturnUrl
                };

                return(await Task.FromResult(View(model)));
            }

            return(await Task.FromResult(View()));
        }