asp.net-core - 在运行 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");
}
}
解决方案
您的示例在 .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 内置模板
推荐阅读
- javascript - JavaScript 在本地测试时有效,但在服务器上访问时无效
- unity3d - 将游戏对象转换为图像?
- django - 从不同的应用程序将产品和服务添加到购物车
- azure-devops - 在 AzureRmWebAppDeployment@4 中找不到具有指定模式的包
- sql - 返回空值 - 合并和 ISNULL
- error-handling - VBScript“打开所有工作簿”错误处理
- angular - 在 Angular 2 多选下拉菜单中实现验证
- r - 是否有 Julia 函数来转换坐标参考系(例如 R 中的 st_transform)?
- spring-cloud - spring-cloud-stream Horsham 是否支持 Spring Boot 2.3?
- python - 当我按以下方式运行我的 python 代码时,为什么我的管道 GridSearchCV 没有结果?