Изменение тела ответа после завершения конечной точкиC#

Место общения программистов C#
Ответить
Anonymous
 Изменение тела ответа после завершения конечной точки

Сообщение Anonymous »


Я пытаюсь использовать промежуточное программное обеспечение для изменения тела ответа после завершения конечной точки. Раньше у меня были проблемы с изменением заголовков под вызовом next(), но с помощью OnStarting() мне удалось их изменить.

Следующая проблема заключается в том, что попытка прочитать тело ответа внутри OnStarting приведет к возникновению исключения. Мне тоже не удалось использовать ActionFilters.

var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); вар приложение = builder.Build(); app.UseMiddleware(); приложение.UseAuthorization(); приложение.MapControllers(); приложение.Выполнить(); общедоступный класс EditResponseMiddleware { частный RequestDelegate _next только для чтения; public EditResponseMiddleware (RequestDelegate следующий) { _следующий = следующий; } общедоступная асинхронная задача InvokeAsync (контекст HttpContext) { // Расшифровываем входящий context.Request.Body context.Response.OnStarting(async () => { использование MemoryStream мс = новый MemoryStream(); // Это выдаст: дождитесь context.Response.Body.CopyToAsync( мс); byte[] содержимое = ms.ToArray(); // Шифруем исходящий context.Response.Body }); дождитесь _next(контекст); } } Это выдает ошибку:
System.NotSupportedException: Stream не поддерживает чтение. в System.IO.Stream.CopyToAsync (назначение потока, Int32 bufferSize, CancellationToken cancelToken) в System.IO.Stream.CopyToAsync (пункт назначения потока)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»