/// <summary> /// Set status code and error in response /// </summary> /// <param name="context">The context.</param> /// <param name="campaignsProductManagerException">The identity server exception.</param> /// <returns></returns> public static async Task SetErrorResponse(this HttpContext context, CampaignsProductManagerException campaignsProductManagerException) { var msg = string.IsNullOrWhiteSpace(campaignsProductManagerException.Error.ErrorDescription) ? ErrorModel.ErrorMessageDefault : campaignsProductManagerException.Error.ErrorDescription; var error = new ErrorModel((int)campaignsProductManagerException.ResponseCode) { Message = msg, ErrorCode = campaignsProductManagerException.Error.ErrorCode }; var response = new ApiResponseModel <string>(error) { CorrelationId = context.TraceIdentifier }; var objectResult = new ObjectResult(response) { StatusCode = (int)campaignsProductManagerException.ResponseCode }; context.Response.ContentType = Constants.Constants.HttpResponseHeaders.ContentTypeJson; context.Response.StatusCode = (int)campaignsProductManagerException.ResponseCode; context.Response.Headers.Add(Constants.Constants.HttpResponseHeaders.HeadersAccessControlAllowOrigin, Constants.Constants.HttpResponseHeaders.HeadersAccessControlAllowOriginValue); await context.Response.WriteAsync(JsonConvert.SerializeObject(objectResult)); }
/// <summary> /// Creates exception handler for api requests. /// </summary> /// <param name="appBuilder">The application builder.</param> /// <param name="logger">The logger.</param> /// <param name="configuration">The configuration.</param> /// <returns></returns> public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder appBuilder, ILogger logger, IConfiguration configuration) { appBuilder.UseExceptionHandler( options => { options.Run(async context => { var exceptionFeature = context.Features.Get <IExceptionHandlerPathFeature>(); if (exceptionFeature != null) { string routeWhereExceptionOccurred = exceptionFeature.Path; Exception exceptionThatOccurred = exceptionFeature.Error; if (!(exceptionThatOccurred is CampaignsProductManagerException campaignsProductManagerException)) { logger.Error(exceptionThatOccurred, exceptionThatOccurred.Message); var error = new Error(configuration, ErrorItem.InternalServerError); campaignsProductManagerException = new CampaignsProductManagerException(HttpStatusCode.InternalServerError, error); } logger.Error(campaignsProductManagerException, routeWhereExceptionOccurred); logger.Error("Headers : " + context.GetRequestHeaders()); await context.SetErrorResponse(campaignsProductManagerException); } }); } ); return(appBuilder); }