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); } }
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); }