首页 > 解决方案 > 在运行 Kestrel 的 ASPNETCORE 控制台应用程序中未调用控制器的操作

问题描述

我想要一个控制台应用程序运行一个接受 REST 调用的独立网络服务器。我的应用程序是一个带有 ASP .NET Core 的 .NET Core 应用程序。我在这个领域是全新的。我找到了一些示例,现在我正在努力配置控制器路由。使用下面的代码,我在使用http://localhost:3354/api/Demo/Hello时总是会收到“404 Not Found”错误。有谁知道我做错了什么?感谢您的任何建议!我使用 VS2019 和 ASPNETCORE 2.2.8。

class Program
{
    static void Main(string[] args)
    {
        var builder = WebHost.CreateDefaultBuilder()
            .ConfigureKestrel(options => options.ListenAnyIP(3354))
            .UseStartup<Startup>();

        builder.Build().Run();
    }
}

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder builder, IHostingEnvironment env)
    {
        builder.UseMvc(delegate(IRouteBuilder routeBuilder)
        {
            routeBuilder.MapRoute("default", "api/{controller}/{action}");
        });
    }
}

这里是 DemoController 类。

public class DemoController : Controller
{
    public IActionResult Hello()
    {
        return Ok("Hello world");
    }
}

这就是解决方案的外观。

标签: asp.net-corerest

解决方案


您的示例在 .net core 2.2 上对我来说运行良好您可以尝试显式声明路由,例如

[ApiController]
[Route("api/[controller]")]
public class DemoController : Controller
{
    [HttpGet("hello")]
    public IActionResult Hello()
    {
        return Ok("Hello world");
    }
}

您也可以考虑使用 api Web 应用程序的 Visual Studio 内置模板


推荐阅读