Пользовательские модели ответов 401 и 403 с промежуточным программным обеспечением UseJwtBearerAuthentication

Я хочу ответить моделью ответа JSON, когда возникают 401 и 403. Например:

HTTP 401
{
  "message": "Authentication failed. The request must include a valid and non-expired bearer token in the Authorization header."
}

Я использую промежуточное программное обеспечение (как предложено вэтот ответ) для перехвата 404-х, и он прекрасно работает, но это не относится к 401 или 403-м. Вот промежуточное ПО:

app.Use(async (context, next) =>
{
    await next();
    if (context.Response.StatusCode == 401)
    {
        context.Response.ContentType = "application/json";
        await context.Response.WriteAsync(JsonConvert.SerializeObject(UnauthorizedModel.Create(), SerializerSettings), Encoding.UTF8);
    }
});

Когда помещены НИЖЕapp.UseJwtBearerAuthentication(..) вStartup.Configure(..), кажется, полностью игнорируется и возвращается нормальный 401.

Когда размещены вышеapp.UseJwtBearerAuthentication(..) вStartup.Configure(..)затем выдается следующее исключение:

Идентификатор соединения "0HKT7SUBPLHEM": приложение сгенерировало необработанное исключение. System.InvalidOperationException: Заголовки только для чтения, ответ уже начался. в Microsoft.AspNetCore.Server.Kestrel.Internal.Http.FrameHeaders.Microsoft.AspNetCore.Http.IHeaderDictionary.set_Item (строковый ключ, значение StringValues) в Microsoft.AspNetCore.Http.Internal.DefaultHttpResponT.Project.ject Api.Startup. <B__12_0> d.MoveNext () в Startup.cs

Ответы на вопрос(2)

Ваш ответ на вопрос