【发布时间】:2018-10-02 16:21:28
【问题描述】:
我有一个 ASP.NET Core,它带有以下接受 POST 请求的控制器:
[Route("api/v1/tenants/tests")]
public class TestsController : Controller
{
[HttpPost]
public IActionResult Post(string tenantId)
{
return Ok();
}
}
我开发了一个“空”中间件来测试。在Startup.cs文件的Configure方法中定义:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
app.Use(async (context, next) =>
{
// Forward to the next one.
await next.Invoke();
});
}
问题
当我通过 Postman 调用控制器时,对 POST 方法的初始调用成功通过中间件,然后到达控制器。但是,以下调用直接转到 Controller,完全跳过了中间件。这是为什么呢?
【问题讨论】:
-
你可以使用 app.Run 代替 app.Use
-
@Progressive 与app.Use相反,app.Run不允许调用管道中的其他中间件:(
标签: c# asp.net-core middleware