【发布时间】:2018-06-25 01:23:09
【问题描述】:
我创建了一个包含 ASP.NET Core 的简单 .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。
我错过了什么?我也尝试过指定路由,但没有找到控制器。
【问题讨论】:
-
在操作中包含
[HttpGet]或将Route替换为[HttpGet("Home/Index")],因为不使用视图。最后不应该 Main 是public -
你为什么不从默认项目开始,所有这些都为你包括在内
-
@johnny5 我们需要将其合并到现有项目中;这是一个概念证明。
-
@Nkosi 将
[Route("Home/Index")]更改为[HttpGet("Home/Index")]或添加[HttpGet]都没有解决问题;日志仍然显示 404。 -
你确定 main 被调用了吗?
标签: c# asp.net-core