private static async Task WriteResponseErrorsAsync( HttpContext context, ApiErrorDetails errorDetails) { context.Response.StatusCode = (int)errorDetails.StatusCode; var json = JsonConvert.SerializeObject(errorDetails); await context .Response .WriteAsync(json); }
public override Task OnAuthorizationAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken) { ApiErrorDetails apierrordetails = new ApiErrorDetails(); try { var validatedToken = IsBearertokenValid(actionContext); if (validatedToken != null) { return(Task.FromResult <object>(null)); } } catch (Exception ex) { //var userClaims = HttpContext.Current.GetOwinContext().Authentication.User.Claims; Stream requestBodyStream = actionContext.Request.Content.ReadAsStreamAsync().Result; requestBodyStream.Position = 0; string requestBody = string.Empty; using (StreamReader sr = new StreamReader(requestBodyStream)) { requestBody = sr.ReadToEnd(); } apierrordetails.ExceptionMessage = "Unable to " + actionContext.Request.Method.ToString() + " data to API service at URL:" + actionContext.Request.RequestUri.ToString() + " Server returned an Unauthorized."; apierrordetails.CorrelationId = actionContext.Request.Headers.Contains("CorrelationId") ? Convert.ToInt64(actionContext.Request.Headers.GetValues("CorrelationId").FirstOrDefault()) : Convert.ToInt64(TraceHelper.GetCorrelationId()); apierrordetails.ExceptionCode = 401; apierrordetails.RequestBody = requestBody; apierrordetails.RequestMethod = actionContext.Request.Method.ToString(); apierrordetails.RequestURL = actionContext.Request.RequestUri.ToString(); apierrordetails.Message = ex.Message; actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden) { Content = new ObjectContent(typeof(ApiErrorDetails), apierrordetails, GlobalConfiguration.Configuration.Formatters.JsonFormatter) }; return(Task.FromResult <object>(actionContext)); } return(Task.FromResult <object>(null)); }