Los*_*les 5 asp.net-core asp.net-core-2.0
有一个Asp.NET Core 2.0应用程序,我想将任何不/api以该路径开头的路径映射为仅重新执行到根路径。我添加了以下内容,但似乎不起作用:
app.MapWhen(
c => !c.Request.Path.StartsWithSegments("/api", StringComparison.OrdinalIgnoreCase),
a => a.UseStatusCodePagesWithReExecute("/")
);
Run Code Online (Sandbox Code Playgroud)
不使用MapWhen(),而仅对app.UseStatusCodePagesWithReExecute("/")所有不是root的路径使用。只想为不是root和not的所有路径添加过滤/api。有关如何执行此操作的任何想法?
分支管道在这里无法正常工作,因为您没有在状态代码页中间件之后添加 MVC 中间件。这是正确的管道设置:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.MapWhen(
c => !c.Request.Path.StartsWithSegments("/api", StringComparison.OrdinalIgnoreCase),
a =>
{
a.UseStatusCodePagesWithReExecute("/");
a.UseMvc();
});
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
请注意,这里中间件顺序很重要,您应该在 MVC 之前添加状态代码页中间件。
然而,使用条件管道在这里似乎有点矫枉过正。您可以使用URL 重写中间件来实现您的目标:
var options = new RewriteOptions()
.AddRewrite(@"^(?!/api)", "/", skipRemainingRules: true);
app.UseRewriter(options);
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |