我有一个小型的 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");
}
}
}
我尝试了其他端口,我删除了整个代码并重新编写了它,我什至使用了一个有效的旧项目中的代码
在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");
}
}