仅使用Get()方法的常规路由不适用于简单的轻推控制器

时间:2019-07-10 16:44:05

标签: c# asp.net-core routing asp.net-core-webapi

我有一个简单的ASP Net Core Web API,带有一个轻推控制器,可对Get请求返回true。 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}"));                 
}
在StartUp.cs的Configure(IApplicationBuilder app, IHostingEnvironment env)方法中调用

ConfigureRoutes

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

1 个答案:

答案 0 :(得分:1)

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

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