我创建了一个简单的.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。
我想念什么?我也尝试过指定路由,但是没有运气让它找到控制器。
答案 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中有更多信息。如果这不起作用,我将创建一个新项目并手动移动所有内容。我唯一想到的另一个问题是您的包管理器缓存混乱了,或者您的计算机上安装了太多的运行时间