【发布时间】:2020-06-29 15:49:17
【问题描述】:
我定义了 2 条路线:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute("api", "{controller=Home}/api/v1/{action=Index}/{id?}");
});
在控制器中,如果我没有在控制器中指定路由,它将使用任何一个。两个网址都有效:
https://myapp/mymodel/api/v1/id/123
我希望它仅适用于第一个 url,但如果将例如 [Route("api")] 添加到控制器,则上述路由都不起作用。
[Route("api")] //with this line it returns 404
public mymodel ID(int? id)
{
//some code
}
【问题讨论】:
-
我已经读过,所以添加路由名称似乎应该可行。我一定是错过了什么。
-
您不是在添加路由名称,而是在为基于属性的路由添加路由模板。
UseEndpoints用于基于约定的路由。两个独立的概念 -
如果我将路由直接添加到控制器,它会按我的意愿工作 [Route("[controller]/api/v1/id/{id?}")],但我想成为能够从启动类中选择模板,而不是在控制器中编写整个路由。
标签: asp.net-mvc asp.net-core routes