Пример #1
0
        public override bool ProcessRabbitMqMessage(string exceptionModelString)
        {
            try
            {
                var queueModel     = new QueueExceptionDto().DeserializeModel(exceptionModelString);
                var exceptionModel = Utils.mapQueueExceptionRequestDtoToExceptionModel(queueModel);

                using (var scope = _services.CreateScope())
                {
                    var exceptionService = (IExceptionService)scope
                                           .ServiceProvider
                                           .GetRequiredService(typeof(IExceptionService));

                    exceptionService.InsertExceptionModel(exceptionModel);

                    if (base.FirstStartOfWorkerFlag)
                    {
                        _logger.LogInfo("Restoring all Exception Model data from database for SignalR. This is first start of application.");
                    }

                    base.FirstStartOfWorkerFlag = false;
                    return(exceptionService.CommitChanges());
                }
            }
            catch (JsonReaderException jsonReaderException)
            {
                _logger.LogError("Could not Deserialize Exception Model. Exception: " + jsonReaderException.Message);
                return(false);
            }
            catch (Exception exception)
            {
                _logger.LogError("Could not create Services Scoper or insert Exception Model in database. Exception: " + exception.Message);
                return(false);
            }
        }
        private async Task handleCustomExceptions(BaseException ex, HttpContext httpContext)
        {
            if (ex.code == 0)
            {
                ex.code = HttpStatusCode.InternalServerError;
            }

            var response = new QueueExceptionDto();

            response.Message      = ex.Message;
            response.Status       = ex.code.ToString();
            response.RequestedUri = httpContext.Request.Path;
            response.Timestamp    = DateTime.Now.ToString("yyyy-MM-dd HH:mm tt");
            response.Origin       = ex.origin;

            httpContext.Response.ContentType = "application/json";
            httpContext.Response.StatusCode  = (int)ex.code;

            await httpContext.Response.WriteAsync(response.SerializeModel());

            if (ex.code.Equals(HttpStatusCode.InternalServerError))
            {
                _manager.Publish(response);
            }
        }
Пример #3
0
        public static ExceptionModel mapQueueExceptionRequestDtoToExceptionModel(QueueExceptionDto excetionRequestDto)
        {
            ExceptionModel model = new ExceptionModel();

            model.Message              = excetionRequestDto.Message;
            model.Origin               = excetionRequestDto.Origin;
            model.RequestedUri         = excetionRequestDto.RequestedUri;
            model.OcurredExceptionDate = DateTime.ParseExact(excetionRequestDto.Timestamp, "yyyy-MM-dd HH:mm tt", null);
            model.StatusCode           = excetionRequestDto.Status;

            return(model);
        }
        private async Task handleAll(Exception ex, HttpContext httpContext)
        {
            var response = new QueueExceptionDto();

            response.Message      = ex.Message;
            response.Status       = HttpStatusCode.InternalServerError.ToString();
            response.RequestedUri = httpContext.Request.Path;
            response.Timestamp    = DateTime.Now.ToString("yyyy-MM-dd HH:mm tt");
            response.Origin       = getOriginBasedOnContext(httpContext.Request.Path);

            httpContext.Response.ContentType = "application/json";
            httpContext.Response.StatusCode  = (int)HttpStatusCode.InternalServerError;

            await httpContext.Response.WriteAsync(response.SerializeModel());

            _manager.Publish(response);
        }