Asp.Net Core中间件路径字符串startswithsegments问题

2023-12-21

有一个 Asp.NET Core 2.0 应用程序,我想映射任何不以/api重新执行到根路径。我添加了以下内容,但似乎不起作用:

app.MapWhen(
   c => !c.Request.Path.StartsWithSegments("/api", StringComparison.OrdinalIgnoreCase),
   a => a.UseStatusCodePagesWithReExecute("/")
);

不使用 MapWhen() 而只是使用app.UseStatusCodePagesWithReExecute("/")适用于除 root 之外的所有路径。只是想为所有非 root 的路径添加过滤/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();
}

请注意,这里中间件顺序很重要,您应该在 MVC 之前添加状态代码页中间件。

然而,使用条件管道在这里似乎有点矫枉过正。您可以通过以下方式实现您的目标URL重写中间件 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?tabs=aspnetcore2x:

var options = new RewriteOptions()
    .AddRewrite(@"^(?!/api)", "/", skipRemainingRules: true);
app.UseRewriter(options);

app.UseMvc();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.Net Core中间件路径字符串startswithsegments问题 的相关文章

随机推荐

  • 用于将大小转换为人类可读字符串的 ObjC/Cocoa 类?

    有没有一种简单的方法可以做类似的事情 NSMagicDataConverter humanStringWithBytes 20000000 哪个会返回 19 1MB 从 OS X 10 8 和 iOS 6 开始 您可以使用NSByteCou
  • 如何将动态XHR内容动态导入到模板中?

    我使用以下代码获取仪表板 HTML 数据 该代码在单击按钮时执行 fetchDashboard const requestOptions Object headers new HttpHeaders append Authorization
  • 通过关键参数保持视图路由器处于活动状态

    如何分别使用不同的参数使 vue router 保持活动状态 TL DR 让我们考虑一个开发 Facebook 等网站的例子 每个用户都有一个个人资料页面 因为有很多用户 我们不想迭代所有用户并在加载时加载所有个人资料页面 如下所示
  • 动态无锁内存分配器

    编写满足无锁进度保证的算法或数据结构的困难之一是动态内存分配 调用类似malloc or new不保证以便携方式无锁 然而 许多无锁实现malloc or new存在 并且还有各种可用于实现无锁算法 数据结构的无锁内存分配器 但是 我仍然不
  • android-检测低电量通知的方法

    有没有办法在 android eclipse 中检测低电量通知 我有一个动作游戏 当它出现时需要暂停 官方开发者网站上有一个关于监控电池电量和充电状态的教程 我希望它对你有帮助 http developer android com trai
  • 为什么当视图聚焦时 RecyclerView 会滚动到视图顶部

    I have RecyclerView 某种聊天 物品有TextViews布局颠倒了 下面的输入字段RecyclerView 当我滚动到底部时RecyclerView然后单击底部项目 它会获得焦点 仅当它获得焦点时 而不是每次单击时 并且R
  • PowerShell 2.0如何处理异常?

    为什么我在运行这两个简单示例时在控制台上打印错误消息 我希望我在控制台上打印 错误测试 而不是 Get WmiObject RPC 服务器是 不可用 HRESULT 的异常 0x800706BA 在行 3 字符 15 Get WmiObje
  • python-画一张愤怒和惊讶的脸

    我使用这段代码并尝试更改代码以获得愤怒和惊讶的表情 但我做不到 谁能帮我 import turtle smiles turtle Turtle smiles penup smiles goto 75 150 smiles pendown s
  • 循环动态 JSON 以获取所有节点 C#

    我有多个 JSON 文件 需要循环并从中获取某些详细信息 但是 我希望有一个一刀切的循环 因为子节点在属性方面彼此匹配 谁能建议我如何循环我的 JSON 节点 Example name Example description Example
  • 我如何获得文本所属的跨度类ID?

    HTML 内容可编辑的div div div int main span class openParen bm1 span span class closeParen bm1 span div div if span class openP
  • 从 axios 请求设置状态的最佳实践

    我有一个具有以下功能的 api js 文件 export const login loginUserName loginPassword setUser gt axios method post data username loginUse
  • 按钮的 Android 主题样式不适用

    我的主要活动视图中有三个简单的按钮 我想做的是将按钮样式应用于所有按钮 但我没有这样做 这是我的 xml
  • 根据当月操作上月数据

    我有一个名为 Prv Data 的表 其中包含上个月的报告 具有 Report Id 和 Timeline 列 Prv Data gt Report ID Timeline 01 Weekly Mon 01 Weekly Mon 01 We
  • 如果字符串包含单引号或双引号,则调用 CMIS 查询时出错

    这是我的问题 当我尝试在 CMIS 查询中传递包含单引号或双引号的查询字符串时 它不会执行并给出如下错误 06 19 23 306 ERROR DispatcherPortlet 561 Could not complete request
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • 关于reactjs,preventDefault 与 return false

    我今天开始学习React Js 发现一个有趣的事实 并且没有找到任何相关主题 我们必须使用它preventDefault比使用return false防止默认行为的语句 https reactjs org docs handling eve
  • 无法使用 HeidiSQL 连接到 LocalDB

    我一直在尝试使用最新版本 此时 的 heidisql 连接到 localdb 实例 但无济于事 我已按照此答案中的说明进行操作 但它似乎不起作用 不再 HeidiSql 与 MS SQL Server LocalDB 的连接 https s
  • 是否可以在 Silverlight Web 应用程序和 Windows Phone 7 应用程序之间共享代码

    我有一个简单的 Silverlight 应用程序 我希望它几乎按原样在 Windows Phone 7 上运行 我创建了一个新的 Windows Phone 7 项目 当我引用 Silverlight 应用程序时 我收到一条警告 添加对 S
  • captureVisibleTab 不可见选项卡

    是否可以使用 Chrome 扩展 API 截取不可见选项卡的屏幕截图 chrome tabs captureVisibleTab仅使用特定窗口上选定的选项卡 我可以通过编程方式切换到所需的选项卡 截取屏幕截图并切换回来 但由于它都是异步的
  • Asp.Net Core中间件路径字符串startswithsegments问题

    有一个 Asp NET Core 2 0 应用程序 我想映射任何不以 api重新执行到根路径 我添加了以下内容 但似乎不起作用 app MapWhen c gt c Request Path StartsWithSegments api S