Beispiel #1
0
        public override void OnException(ExceptionContext context)
        {
            // 1. Exception Is handled so that Request Processing is completed
            // and the result return process starts
            context.ExceptionHandled = true;
            // 2. Read the exception Message
            string message = context.Exception.Message;
            // 3. Returning result
            var viewResult = new ViewResult();
            // 3a. Create a ViewDataDiciotnary and define Key/Values for it
            var viewData = new ViewDataDictionary(modelMetadata, context.ModelState);

            dbContext.ExceptionLogs.Add(new ExceptionLog
            {
                ControllerName   = context.RouteData.Values["controller"].ToString(),
                ActionName       = context.RouteData.Values["action"].ToString(),
                Date             = DateTime.Now,
                ExceptionMesaage = message,
                StackTrace       = context.Exception.StackTrace
            })
            ;
            dbContext.SaveChanges();
            // 3b. define keys for viewData
            viewData["controller"]   = context.RouteData.Values["controller"];
            viewData["action"]       = context.RouteData.Values["action"];
            viewData["errorMessage"] = message;
            viewResult.ViewName      = "CustomError";
            viewResult.ViewData      = viewData;
            context.Result           = viewResult;
        }
Beispiel #2
0
 public async Task InvokeAsync(HttpContext context, VodafoneExceptionDbContext exceptiondbContext)
 {
     try
     {
         // if no exception while processing the request move to next middleware
         await request(context);
     }
     catch (Exception ex)
     {
         exceptiondbContext.ExceptionLogs.Add(new ExceptionLog {
             ExceptionMesaage = ex.Message, Date = DateTime.Now
         });
         exceptiondbContext.SaveChanges();
         // logic for exception handling and generating response
         await HandleErrorAndWriteResponse(context, ex);
     }
 }