1
작동 I가 다음과 같은 조치를 포함하는 ASP.NET 코어 2.0 웹 APIStringContent의 null 값의 결과 만 FormUrlEncodedContent 제대로
public class LoginModel
{
public string Username { get; set; }
public string Password { get; set; }
}
에서 다음 모델
[HttpPost]
public async Task<IActionResult> Login(LoginModel model)
{
if (ModelState.IsValid)
{
var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, false, false);
if (result.Succeeded)
{
ApplicationUser user = await UserManager.FindByNameAsync(model.Username);
return new ObjectResult(await GenerateToken(user));
}
}
return BadRequest(model);
}
JsonConvert와 StringContent를 사용하여 테스트 클라이언트에서 컨트롤러의 작업에 게시 될 때 모델에 NULL 값이 표시됩니다.
var credentials = new LoginModel() { Username = "[email protected]", Password = "somePassword" };
var content = new StringContent(JsonConvert.SerializeObject(credentials), Encoding.UTF8, "application/json");
var response = await client.PostAsync("/api/auth/login", content);
FormUrlEncodedContent를 사용하면 컨트롤러의 작업에서 모델이 올바르게 채워집니다.
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("username", "[email protected]"),
new KeyValuePair<string, string>("password", "somePassword"),
}
var response = await client.PostAsync("/api/auth/login", content);
또한 HttpClient 확장을 사용하여 게시했을 때 모델에 값이 표시되지 않습니다.
var credentials = new LoginModel() { Username = "[email protected]", Password = "somePassword" };
var response = await client.PostAsJsonAsync<LoginModel>("/api/auth/login", credentials);
무엇이 누락 되었습니까? 어떤 도움이라도 대단히 감사하겠습니다.
가능한 복제 [왜 POST 본문에 데이터를 예상 할 때 내가 FromBody 특성을해야합니까] (HTTPS : //stackoverflow.com/questions/34529346/why-do-i-need-frombody-attribute-when-expecting-data-in-post-body) – Set
중복되지 않습니다. 대답은 같을 수 있지만 질문은 그렇지 않습니다. –