Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to write to HttpContext's response body in asp.net core 2.1's middleware

Here it is our middleware's code snippet

public Task InvokeAsync(HttpContext context)
{
    if(!found)
    {
        context.Response.StatusCode = StatusCodes.Status401Unauthorized;
        return context.Response.WriteAsync("Something wrong");
    }
    return _next(context);
}

The problem is that while the client app receives error code 401 which is fine but "Something wrong" string is not found in the response's body. What are we missing here?

like image 778
Arash Avatar asked Mar 06 '23 19:03

Arash


1 Answers

An interesting solution that worked for us:

The following statement: return context.Response.WriteAsync("Something wrong");

was replaced by this one:

return context.Response.Body.WriteAsync("Something wrong").AsTask();

This change made the response be populated properly. Although, I'm not sure yet why this way of response body population would work but not the initial method.

like image 52
Arash Avatar answered Apr 27 '23 13:04

Arash