我在应用程序中有2个中间件。我想从这些中间件中排除一条路由。我试过的是创建一个BuildRouter函数并通过它应用中间件但这不起作用。
public IRouter BuildRouter(IApplicationBuilder applicationBuilder)
{
var builder = new RouteBuilder(applicationBuilder);
builder.MapMiddlewareRoute("/api/", appBuilder => {
appBuilder.ApplyKeyValidation();
appBuilder.ApplyPolicyValidation();
});
return builder.Build();
}
而配置方法是
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseRouter(BuildRouter(app));
app.UseHttpsRedirection();
app.UseMvc();
}
但这不起作用。
您可以将MapWhen
扩展方法与否定谓词一起使用:
app.MapWhen(
httpContext => !httpContext.Request.Path.StartsWithSegments("/pathtoexclude"),
subApp => subApp.UseMyMiddleware()
);