2 回答
TA贡献1757条经验 获得超7个赞
选项 1)
尝试将您的[HttpGet]属性更改为
[HttpGet("GenerateCode/{email}]
/[action]如果这样做,您将需要从控制器的 Route 属性中删除,所以它只是
[Route("api/[controller]")]
选项2)
或者,在Startup.cs变化app.UseMvc();到
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{controller=Home}/{action=Index}/{id?}");
});
并[Route("api/[controller]/[action]")]从控制器属性中删除并确保您也没有该[ApiController]属性
此解决方案将更改您整个项目的路由,因此您必须对所有其他 API 控制器执行相同操作
选项 3)
第三种解决方案是更改[Route("api/[controller]/[action]")]为
[Route("api/[controller]/[action]/{id?}")]
我已经测试了所有 3 个解决方案,它们都带有 URL {{url}}/api/ControllerName/ActionName?email=test
TA贡献1863条经验 获得超2个赞
回答有点晚,但可能对其他人有帮助
选项 4
您可以在 [FromQuery] 属性中显式命名查询字符串参数名称
[HttpGet]
[Authorize(Roles = "admin")]
public async Task<IActionResult> GenerateCode([FromQuery(Name="email")] string email)
{
}
- 2 回答
- 0 关注
- 453 浏览
添加回答
举报