要解决ASP.NET Core 3.0 Web API路由不起作用的问题,可以尝试以下几个解决方法:
services.AddControllers();
在Configure方法中添加以下代码来启用路由:
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
// 返回用户列表
return Ok(users);
}
}
在上面的示例中,控制器的路由模板为"api/[controller]",表示控制器的路由路径将是"api/users"。
[HttpGet("{id}")]
public IActionResult Get(int id)
{
// 根据ID返回用户
var user = users.FirstOrDefault(u => u.Id == id);
if (user == null)
{
return NotFound();
}
return Ok(user);
}
在上面的示例中,动作方法的参数名称为"id",对应于路由路径中的"{id}"参数。
检查路由顺序:如果有多个控制器或动作方法具有相同的路由路径,确保它们的路由顺序正确。路由匹配将按照注册的顺序进行,因此更具体的路由应放在更通用的路由之前。
检查HTTP谓词:确保控制器的动作方法具有正确的HTTP谓词属性,以匹配请求的HTTP方法。例如,如果要处理GET请求,动作方法应该标记为[HttpGet]。
这些解决方法应该能够解决ASP.NET Core 3.0 Web API路由不起作用的问题。如果问题仍然存在,建议仔细检查代码并确保所有配置和属性设置正确。