【发布时间】:2020-05-31 11:52:29
【问题描述】:
我有一个非常基本的 Asp.Net Core Api;我的控制器如下所示:
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
[HttpGet("{id}")]
public IEnumerable<Resource> Test(string id)
{
// Breakpoint here
}
我希望以下 URL 调用该方法并触发断点:
https://localhost:5012/test/test/1
然而,事实并非如此。事实上,下面的 URL 就是这样做的:
https://localhost:5012/test/1
我的印象是 URL 的格式如下(从启动开始):
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
});
所以,除非那个动作是Index:
https://localhost:5012/controller/action/id
但似乎接受的格式是:
https://localhost:5012/controller/id
我的问题是,这是为什么呢?
【问题讨论】:
-
通过指定值为“{id}”的属性,您可以覆盖默认行为。删除属性并使用“/test/test/1”
-
我最初尝试过,但没有任何区别
-
这能回答你的问题吗? Conventional Routing in ASP.NET Core API
标签: asp.net-core routing