Я пытаюсь получить параметр для моего WebAPI из параметра запроса, используя [FromQuery]
, используя ASP.NET Core 2.1. Для жизни меня я не могу понять, что я делаю неправильно.
Конкретное действие выглядит так:
[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 и работают нормально.