传统路由不适用于仅具有 Get() 方法的简单轻推控制器

Conventional routing not working for simple nudge controller with only Get() method

我有一个简单的 asp 网络核心网络 api 和一个微调控制器,returns 对 Get 请求是正确的。 NudgeController.cs 如下所示:

public class NudgeController : Controller
{
    public IActionResult Get()
    {
        return Ok(true);
    }
}

在 StartUp.cs 中,我有以下设置:

private static void ConfigureRoutes(IApplicationBuilder app)
{
    app.UseMvc(routes =>
            routes.MapRoute(
                    name: "nudgeRoute",
                    template: "api/{controller}"));                 
}

ConfigureRoutes 在 StartUp.cs

Configure(IApplicationBuilder app, IHostingEnvironment env) 方法中被调用

当 运行 在本地和当我导航到 http://localhost:56103/api/Nudge 我收到 404 错误? 这里缺少什么?和 WebApi和Asp.net核心在设置常规路由时有什么区别吗?

路由模板未指定任何操作。您假设 Get 应该神奇地被调用,但是 ASP.NET Core 无法知道这一点,也不会做出那样的假设。以下应该修复它。如果路由中没有提供操作段,它会使 Get 成为默认操作。

app.UseMvc(routes =>
    routes.MapRoute(
        name: "nudgeRoute",
        template: "api/{controller}/{action=Get}"));