c# - .NET Core EndRequest 中间件

标签 c# asp.net-core asp.net-core-mvc

我正在构建 ASP.NET Core MVC 应用程序,我需要像之前在 Global.asax 中那样具有 EndRequest 事件。

我怎样才能实现这个目标?

最佳答案

这就像创建一个中间件并确保它在管道中尽快注册一样简单。

例如:

public class EndRequestMiddleware
{
    private readonly RequestDelegate _next;

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

    public async Task Invoke(HttpContext context)
    {
        // Do tasks before other middleware here, aka 'BeginRequest'
        // ...

        // Let the middleware pipeline run
        await _next(context);

        // Do tasks after middleware here, aka 'EndRequest'
        // ...
    }
}

调用await _next(context)将导致管道中的所有中间件运行。所有中间件执行完毕后,将执行 await _next(context) 调用之后的代码。请参阅ASP.NET Core middleware docs有关中间件的更多信息。特别是文档中的这张图片使中间件执行变得清晰: Middleware pipeline

现在我们必须将其注册到 Startup 类中的管道,最好尽快:

public void Configure(IApplicationBuilder app)
{
    app.UseMiddleware<EndRequestMiddleware>();

    // Register other middelware here such as:
    app.UseMvc();
}

关于c# - .NET Core EndRequest 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40604609/

相关文章:

c# - 如何在 Windows 窗体 C# 中同时将两个文件发布到 API

c# - 在 C# 中执行包含 SOURCE 调用的 SQL 脚本

c# - 如何将组合框项目的对齐方式更改为右对齐?

asp.net-core - SignalR 从 Hub 类 AspNetCore 外部调用客户端方法

c# - Entity Framework 通过单个插入添加多个相关实体

c# - 使用 TestHost 进行 Asp Net Core 测试,未找到 WebApplication TestFixture 类

c# - 在 'TContext' 上找不到无参数构造函数

c# - 操作返回无效状态代码 'BadRequest' - Microsoft.Azure.Management.ResourceGraph

.net - 如何将 Azure 应用服务的访问权限限制为仅在 Azure Ad 的用户和组设置中添加的用户?

c# - react +ASP.NET.Core : No 'Access-Control-Allow-Origin' header is present on the requested resource