Program.cs 中的端点可以工作,但不能在 Controller 中工作

问题描述 投票:0回答:1

我有一个小型的 dotnet 测试程序,在 Proxmox 上的 Debian CT 中运行,地址为 192.168.1.200:5000。当我使用 postman 测试 api 时,/test 端点可以工作。在同一台计算机上以及同一网络中的其他计算机上。但是当我从我的控制器测试 /api/greet 时,我得到了 404。知道为什么吗?

程序.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

var app = builder.Build();

app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

app.MapGet("/test", () => "Test route reached");
app.Run();

控制器.cs:

namespace HelloWorldApi.Controllers
{
    [ApiController]
    [Route("api")]
    public class HelloWorldController : ControllerBase
    {
        [HttpGet("greet")]
        public IActionResult GetGreeting()
        {
            return Ok("Hello World");
        }
    }
}

我尝试了其他端口,我删除了整个代码并重新编写了它,我什至使用了一个有效的旧项目中的代码

asp.net api
1个回答
0
投票

在Program.cs中你需要调用

builder.Services.AddControllers();

然后之后

var app = builder.Build();

做:

app.MapControllers()

此外,为了确保控制器的端点正常工作,请添加如下 Route 属性:

[ApiController]
[Route("api/[controller]/[action]")]
public class HelloWorldController : ControllerBase
{
    public IActionResult GetGreeting()
    {
        return Ok("Hello World");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.