我需要做的就是将[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>();