时间:2017-06-24 13:12:45

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

我正在使用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时,我会得到索引页。

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

1 个答案:

答案 0 :(得分:7)

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

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

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