Консольное приложение ASP.NET Core не может найти контроллеры - PullRequest
0 голосов
/ 25 июня 2018

Я создал простой консольный проект .NET Core, включающий ядро ​​ASP.NET, как показано ниже:

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 голосов
/ 27 июня 2018

Я не уверен, что по этой причине, но ваша пустельга использует старую версию 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();
}

Более подробная информация содержится в документах .Если это не сработает, я создам новый проект и перенесу вещи вручную.Единственная другая проблема, о которой я мог подумать, - это кэш вашего менеджера пакетов испорчен или у вас слишком много времени выполнения установлено на вашем компьютере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...