Mam middleware, który ukrywa wyjątek od klienta i zwraca błąd 500 w przypadku żadnego wyjątku:ustawić status odpowiedź w ASP.NET rdzenia middleware
public class ExceptionHandlingMiddleware
{
private readonly RequestDelegate _next;
public ExceptionHandlingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
try
{
await _next.Invoke(context);
}
catch (Exception exception)
{
var message = "Exception during processing request";
using (var writer = new StreamWriter(context.Response.Body))
{
context.Response.StatusCode = 500; //works as it should, response status 500
await writer.WriteAsync(message);
context.Response.StatusCode = 500; //response status 200
}
}
}
}
Moim problemem jest to, że jeśli ja ustawić status odpowiedzi przed pisząc treść, klient zobaczy ten status, ale jeśli ustawię status po wysłaniu wiadomości do ciała, klient otrzyma odpowiedź ze statusem 200.
Czy ktoś mógłby mi wyjaśnić, dlaczego tak się dzieje?
P.S. Używam ASP.NET Core 1.1