gpt4 book ai didi

c# - 从中间件中排除路由 - .net core

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:04 24 4
gpt4 key购买 nike

我在应用程序中有 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()
);

注意:MapWhen 将终止管道,因此如果您希望管道在此之后继续,您可以改用app.UseWhen

关于c# - 从中间件中排除路由 - .net core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52347936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com