.Net Core 2.2默认操作方法不起作用

时间:2019-11-16 13:43:52

标签: .net core

我有以下.Net Core 2.2 api控制器

public class TestController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        return Ok(1);
    }

    [HttpGet]
    [ExactMatch("id")]
    public IActionResult Get([FromRoute]int id)
    {
        return Ok(id);
    }
}

这是我的路线定义:

app.UseMvc(
                routes =>
                {
                    routes.MapRoute("default", "api/{controller}/{action=Get}/{id?}");
                }
                );
        }

以下网址可以正常工作:

https://localhost:44305/api/test
https://localhost:44305/api/test/get/5

但不是这个

 https://localhost:44305/api/test/5     /* Notice the missing action method*/

它返回404错误

有人可以帮助我弄清楚我所缺少的吗?

预先感谢

但是

2 个答案:

答案 0 :(得分:0)

尝试从 Controller (而不是从 ControllerBase )继承的公共类TestController ,并在Route中,应指定要调用的控制器,喜欢:     routes.MapRoute("default", "{controller=Test}/{action=Get}/{id?}");

答案 1 :(得分:0)

首次替换

[ExactMatch("id")]

[HttpGet("id")]

第二次替换

app.UseMvc(
                routes =>
                {
                    routes.MapRoute("default", "api/{controller}/{action=Get}/{id?}");
                }
                );
        }

app.UseMvc(
                routes =>
                {
                    routes.MapRoute("default", "api/{controller}/{action}/{id?}");
                }
                );
        }