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



我需要做的就是将[Connection]HTTP标头从"保持活动"修改为小写"保持活动"。

我写了这门课,

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>();
}

但是当我执行await httpWebRequest.GetResponseAsync();时,不会调用Invoke方法

因此,当发出请求和发送回响应时,中间件会受到攻击。实际上,这意味着您可以像这样两次遍历 Invoke 方法:

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

因此,您可以在ModifyResponse方法中修改响应。

Microsoft的文档将使其更清晰:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-2.1

希望这有所帮助。

您是否在 DI 系统中注册了中间件?您需要在Startup类中执行此操作,ConfigureServices方法:

services.AddScoped<IMiddleware, SomeMiddleware>();

相关内容

  • 没有找到相关文章

最新更新