【发布时间】:2015-09-15 21:15:18
【问题描述】:
在我的控制器中,我有以下方法:
[HttpGet("SimulateLogin/{userName}/{password}")]
public async Task<IActionResult> SimulateLogin(string userName, string password)
{
...
}
如果我调用以下 URL:
BaseUrl/SimulateLogin/用户名/密码
我收到了有效的 (200 / OK) 响应。
如果我调用以下 URL:
BaseUrl/SimulateLogin/?userName=userName&password=密码
我收到无效(404 / 未找到)响应。
有什么区别?为什么第一个有效,第二个无效。我知道这两种格式都适用于以前版本的 MVC / Web API。
【问题讨论】:
-
仅供参考,以防它不仅用于测试。你不应该把密码放在url中
-
是的,这仅用于测试目的。关键是无论我选择在 URL 中传递什么参数,所描述的条件都将保持不变。
-
也许您需要将它们标记为可选的,以便查询字符串也被接受?如果我没记错的话,它被定义为
"SimulateLogin/{userName?}/{password?}" -
@DanielJ.G. - 你的建议奏效了。我肯定需要复习一下路由模板的语法。最令人困惑的是,在以前版本的 MVC / Web API 中我不需要这样做。当然,我们仍处于测试版中,因此这可能会有所改变。无论如何,如果您想让您的评论成为答案,我会将其标记为解决方案。
-
是的,很难知道哪些事情发生了变化,哪些没有!
标签: asp.net-web-api asp.net-core-mvc