ASP网络核心路由多个参数

时间:2020-08-25 11:10:07

标签: c# asp.net-core

我正在尝试路由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),但我只希望第一个方法触发。

我该如何实现?

2 个答案:

答案 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。


此外,请注意以下几点:如果在路由中添加前导/,则所有前缀都将被忽略。