【问题标题】:ASP.NET Core wildcard route exceptASP.NET Core 通配符路由,除了
【发布时间】:2017-11-27 22:32:35
【问题描述】:

我正在使用 ASP.NET Core 来提供这样的 SPA:

[<Route("{*url}")>]
member this.Index () =      
    this.View("~/wwwroot/Index.cshtml")

我的 JSON 端点在同一个应用程序上,路由如下:

[<Route("api/something/{somethingId:int})>]

这很好用,除了当我尝试调用端点 api/something/that/doesnt/exist 时,当我真正想要 404 时,我得到了索引页。

是否可以设置[&lt;Route("{*url}")&gt;] 以排除任何以“api”开头的网址?

【问题讨论】:

标签: asp.net asp.net-core routing asp.net-core-mvc asp.net-core-webapi


【解决方案1】:

您应该使用Route Constraints。有一个正则表达式选项,您可以使用它来过滤掉 API 调用(您不想要的)。

然后你需要做一个否定的前瞻来否定一个字符串。

[<Route("{*url:regex(^(?!api).*$)}")>]

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 2011-02-11
    • 2014-12-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多