ASP.NET Core Изменить заголовки HTTP-запросов с помощью промежуточного программного обеспечения - PullRequest
0 голосов
/ 13 октября 2018

Все, что мне нужно сделать, это изменить [Connection] заголовок HTTP с «Keep-alive» на строчные «keep-alive».

Я написал класс,

public class PreRequestModifications
{

    private readonly RequestDelegate _next;

    public PreRequestModifications(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        // Does not get called when making an HTTPWebRequest.   
        await _next.Invoke(context);              
    }
}

и зарегистрировано при запуске,

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {    
     app.UseMiddleware<PreRequestModifications>();
 }

, но метод Invoke не вызывается при выполнении await httpWebRequest.GetResponseAsync();

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Вы зарегистрировали свое промежуточное программное обеспечение в системе DI?Вы должны сделать это в вашем Startup классе, ConfigureServices методе:

services.AddScoped<IMiddleware, SomeMiddleware>();
0 голосов
/ 13 октября 2018

Таким образом, промежуточное ПО получает удар, когда сделан запрос и когда ответ отправлен обратно.Фактически это означает, что вы можете дважды перемещаться по методу Invoke следующим образом:

public async Task Invoke(HttpContext context)
{
  ModifyRequest(context);
  await _next(context);
  ModifyResponse(context);
}

Таким образом, вы можете изменить ответ в методе ModifyResponse.

Документация Microsoft сделает его более понятным: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-2.1

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...