我正在尝试路由asp.net核心应用程序。
我有这种情况:
Ciphertext (hex): @67D4D4E0019BA7D0E75CC92C41488EF13613C1ED8A95B60E56347D1514AC5D7AF780F4314CA047A487AB67DF2D94174A
Decrypted (hex): 54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f67
Decrypted : The quick brown fox jumps over the lazy dog
我遇到的问题是,当用户转到链接[Route("/{user}")]
public IActionResult FirstAction(string user)
{
// Code
}
[Route("/{user}/{project}")]
public IActionResult SecondAction(string user, string project)
{
// Code 2
}
时,它会同时触发两种方法(/something
和// Code 1
),但我只希望第一个方法触发。
我该如何实现?
答案 0 :(得分:1)
使用更好的REST API路由
[Route("/users/{user}")]
[Route("/users/{user}/projects/{project}")]
答案 1 :(得分:0)
您确定两个动作都被触发了吗?您正在使用哪个版本的ASP NET Core?
我测试了以下内容:
[HttpGet("/{user}")]
public ActionResult<string> Test1(string user)
{
return "User " + user;
}
[HttpGet("/{user}/{project}")]
public ActionResult<string> Test2(string user, string project)
{
return "User " + user + " Project " + project;
}
显式的路由。如果只有一个字符串,则路由Test1。如果有两个字符串,则路由Test2。
此外,请注意以下几点:如果在路由中添加前导/,则所有前缀都将被忽略。