- Reply
Re: Set content when returning result in ExceptionFilterAttribute
Oct 08, 2019 07:53 AM|Rena Ni|LINK
Hi b.dev,
You could change your code like below:
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute { public override void OnException(ExceptionContext context) { if (context.Exception is UnauthorizedAccessException) { var response = new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Authorization exception while accessing ST."), ReasonPhrase = "User is not authorized. Please contact your administrator." }; context.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "User is not authorized. Please contact your administrator."; context.Result = new HttpResponseMessageResult(response); base.OnException(context); } } } public class HttpResponseMessageResult : IActionResult { private readonly HttpResponseMessage _responseMessage; public HttpResponseMessageResult(HttpResponseMessage responseMessage) { _responseMessage = responseMessage; // could add throw if null } public async Task ExecuteResultAsync(ActionContext context) { context.HttpContext.Response.StatusCode = (int)_responseMessage.StatusCode; using (var stream = await _responseMessage.Content.ReadAsStreamAsync()) { await stream.CopyToAsync(context.HttpContext.Response.Body); await context.HttpContext.Response.Body.FlushAsync(); } } }
Result:
Best Regards,
Rena
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue.
If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].
Please remember to click "Mark as Answer" the responses that resolved your issue.
If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].
Participant
1910 Points
641 Posts