我尝试在macOS上创建一个asp.net核心web api。
但我的中间件没有在mvc-call上调用。
我的配置:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, BackendDbContext context)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
//app.UseStaticFiles();
app.UseMvc();
app.UseMiddleware<AuthMiddleware>();
BackendDbInitializer.Init(context);
}
我的中间件:
public class AuthMiddleware
{
private readonly RequestDelegate _next;
public AuthMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
Console.WriteLine("Invoke......................");
await _next.Invoke(context);
}
}
当我执行HTTP请求时,它与控制器请求不匹配。中间件类被调用。
如何设置只在mvc-request上调用中间件类。
答案 0 :(得分:1)
您可以将中间件用作MVC过滤器:
public class HomeController : Controller
{
[MiddlewareFilter(typeof(AuthMiddleware))]
public IActionResult Index()
{
return View();
}
}
在这种情况下,每次调用操作方法AuthMiddleware
时都会运行Index
。
PS :您需要安装此软件包(Microsoft.AspNetCore.Mvc.Core)
more info(参见中间件作为MVC过滤器部分)