【发布时间】:2020-02-05 22:31:23
【问题描述】:
我正在尝试使用 ASP.NET Core 2.1 从使用 [FromQuery] 的查询参数中获取我的 WebAPI 的参数。对于我的一生,我无法弄清楚我做错了什么。
具体动作如下所示:
[Route("api/[controller]/[action]")]
public class AuthController : Controller
{
[HttpGet]
[Authorize(Roles = "admin")]
public async Task<IActionResult> GenerateCode([FromQuery]string email)
{
if (String.IsNullOrEmpty(email))
return new BadRequestObjectResult(new ApiBadRequestResponse(new string[] { "Email is empty." }));
var result = await _mediator.Send(new CreateAccessCode.Command
{
Email = email
});
if (result.Succeeded)
return new OkObjectResult(new ApiOkResponse(result.Data));
return new BadRequestObjectResult(new ApiBadRequestResponse(result.Errors));
}
}
email 始终为 null,我在函数中放置了一个断点,因此我知道它会被调用。
我发送的请求是这样的:
{{url}}/api/auth/generatecode?email=test
如果我从头开始创建一个新项目,[FromQuery] 似乎可以工作,我不知道我在做什么不同。该操作被调用,但由于第一行而总是返回 BadResponse...
我的 startup.cs 函数如下所示:
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddMvcOptions(options =>
{
options.Filters.Add(new ActionValidationFilter());
})
.AddFluentValidation()
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver();
})
.AddSessionStateTempDataProvider();
我完全迷路了。这是我在 WebAPI 中寻找查询参数的第一个操作。所有其他操作都在使用 FromBody 并且工作正常。
【问题讨论】:
-
你用什么来提交数据到Web API?反应,角度,Jquery?请清楚地提及,以便我可以帮助您
-
从你的方法中移除 [HttpPost] 属性。
-
您不需要使用FormQuery,请删除[HttpPost]
-
目前,只是使用邮递员发送请求。删除 HttpPost 或切换 HttpGet 不会改变行为。
-
你试过不使用[FromQuery]吗?
标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-core-2.1