ASP.NET Core控制台应用程序找不到控制器

时间:2018-06-25 01:23:09

标签: c# asp.net-core

我创建了一个简单的.NET Core控制台项目,该项目包括ASP.NET core,如下所示:

MyProject.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  </ItemGroup>
</Project>

在我的Program.cs中:

public class Program
{
    static void Main()
    {
        WebHost.CreateDefaultBuilder()
            .UseKestrel()
            .UseStartup<Startup>()
            .UseUrls("http://localhost:1234")
            .Build()
            .Run();
    }
}

在Startup.cs中,我有:

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

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseMvc();
    }
}

在Controllers文件夹中还有一个控制器:

public class HomeController : Controller
{
    [Route("Home/Index")]
    public IActionResult Index()
    {
        return Ok("Hello from index");
    }
}

但是我无能为力,似乎使它无法正常工作。 日志显示,对http://localhost:1234/Home/Index的请求是通过Kestrel发送的,但是是404ing。

我想念什么?我也尝试过指定路由,但是没有运气让它找到控制器。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是原因,但您的红est使用的是旧版1.1版本,为了使某些过程(如迁移)正常运行(该迁移依赖于鸭子输入),您应该声明BuildWebHost方法:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

docs中有更多信息。如果这不起作用,我将创建一个新项目并手动移动所有内容。我唯一想到的另一个问题是您的包管理器缓存混乱了,或者您的计算机上安装了太多的运行时间