ASP.NET Core使用中间件修改HTTP请求标头

时间:2018-10-13 12:40:35

标签: c# asp.net-core httprequest middleware system.net.httpwebrequest

我要做的就是将[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 :(得分:1)

因此,在发出请求并发送回响应时,中间件会受到攻击。实际上,这意味着您可以像这样两次遍历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

希望这会有所帮助。

答案 1 :(得分:1)

您是否已在DI系统中注册了中间件?您需要在AfterSaveBehavior类的Startup方法中这样做:

ConfigureServices