public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken) { var httpError = value as HttpError; if (httpError == null) { throw new ArgumentException("value is not HttpError instance"); } var problemJsonResponse = new ProblemJsonModel { TypeUri = "about:blank", Detail = httpError.ExceptionMessage, Instance = string.Format("urn:ietf:rfc:draft-nottingham-http-problem-06:x-exception:{0}", httpError.ExceptionType), DebugInfo = httpError.StackTrace, Title = httpError.Message }; return(base.WriteToStreamAsync(typeof(ProblemJsonModel), problemJsonResponse, writeStream, content, transportContext, cancellationToken)); }
private static async Task WriteResponse(IOwinResponse owinResponse, ProblemJsonModel problemJsonResponse) { var message = JsonConvert.SerializeObject(problemJsonResponse); var bytes = Encoding.UTF8.GetBytes(message); owinResponse.Headers.Add("Content-type", new[] { ProblemJsonContentType, "charset=utf-8" }); await owinResponse.Body.WriteAsync(bytes, 0, bytes.Length); }
private ProblemJsonModel CreateResponse(HttpResponseException exception) { var problemJsonResponse = new ProblemJsonModel { TypeUri = "about:blank", Status = (int)exception.Response.StatusCode, Instance = string.Format("urn:ietf:rfc:draft-nottingham-http-problem-06:x-exception:{0}", exception.GetType().FullName), }; if (_developerMode) { problemJsonResponse.Detail = exception.Message; problemJsonResponse.DebugInfo = exception.StackTrace; problemJsonResponse.Title = exception.Message; } return(problemJsonResponse); }