J'ai deux applications .Net Core, une API Web et un client. Envoi postal du client à l'aide:.net Core 2.0 web api 400 erreur utilisant Validateantiforgerytoken
<form asp-action="Create" method="post">
@Html.AntiForgeryToken()
.....
</form>
contrôleur client:
public async Task<IActionResult> Create([Bind("QuestionId,TheQuestion")] SecurityQuestion securityQuestion)
{
_session.SetString(SessionsKeys.Directory, "/SecurityQuestions");
if (ModelState.IsValid)
{
var data = await _theService.PostWebApi(securityQuestion);
if (data.Item3 == "True")
{
return RedirectToAction(nameof(Index));
}
return View(data.Item1);
}
return View(securityQuestion);
}
Méthode pour communiquer avec l'API Web:
public async Task<(object, string, string)> PostWebApi(TObject model)
{
var dir = _session.GetString(SessionsKeys.Directory);
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(_webApiData.WebApiitems.Url);
MediaTypeWithQualityHeaderValue contentType = new MediaTypeWithQualityHeaderValue("application/json");
client.DefaultRequestHeaders.Accept.Add(contentType);
string stringData = JsonConvert.SerializeObject(model);
var contentData = new StringContent(stringData, System.Text.Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsync(dir + "/", contentData).Result;
var msg = await response.Content.ReadAsStringAsync();
var theresponse = response.IsSuccessStatusCode.ToString();
return (model,msg,theresponse);
}
}
API Web Controller:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> PostSecurityQuestion([FromRoute] SecurityQuestion securityQuestion)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_context.SecurityQuestion.Add(securityQuestion);
await _context.SaveChangesAsync();
return CreatedAtAction("GetSecurityQuestion", new { id = securityQuestion.QuestionId }, securityQuestion);
}
Si je supprime [ValidateAntiForgeryToken]
, ça marche. J'ai également essayé d'enlever [Form]
, encore j'obtiens l'erreur 400.
Est-ce que je n'ai pas de paramètres supplémentaires dans les configurations de démarrage?
Il est logique, j'ai vérifié le blog, ne pouvait pas vraiment suivre la partie sur Axios. Je vais essayer de trouver un exemple étape par étape. Merci de m'avoir indiqué la bonne direction. – hncl