【发布时间】:2020-04-21 19:59:42
【问题描述】:
我正在使用 .NET Core 3.1,正在创建一个 web api。
我的 API 控制器正在映射到以下内容:
app.UseEndpoints(endpoints => endpoints.MapControllers());
有没有一种方法可以让我只在路由匹配时才执行操作,但在实际控制器操作执行之前?
我的情况是,我需要在执行应用程序逻辑之前在数据库中创建一个实体。
我最初考虑了一个自定义中间件,但只是意识到如果我将中间件放在 app.UseEndpoints 之前,它将为任何和所有请求触发(将创建许多虚拟实体),即使是那些不路由的请求。
如果我把它放在app.UseEndpoints 之后就太晚了,因为应用程序代码已经执行了。
在app.UseEndpoints 之前运行的中间件中管理路由白名单是一个想法,但维护起来会很麻烦。
那么有没有办法挂钩端点路由,或者框架中的 API 可以让我“抢先”确定路由是否有效?
【问题讨论】:
标签: c# .net asp.net-core asp.net-core-3.0