Search code examples
c#middlewareasp.net-core-2.1

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?


Solution

  • 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.