J'ai un certain contrôleur api avec cette action:Asp action async Api Web - erreur 404
public class ProxyController : ApiController {
public async Task<HttpResponseMessage> PostActionAsync(string confirmKey)
{
return await Task<HttpResponseMessage>.Factory.StartNew(() =>
{
var result = GetSomeResult(confirmKey);
return Request.CreateResponse(HttpStatusCode.Created, result);
});
}
}
Et voici mon cheminement api confuguration:
routes.MapHttpRoute("DefaultApi", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
Lorsque je tente de faire des Envoyer/Obtenir des demandes à cette action, elle renvoie l'erreur '404'. Comment puis-je le réparer? Toutes les autres actions non-asynchrones de ce contrôleur fonctionnent correctement.
UPD. Requête JS:
$.ajax({
url: Url + '/api/Proxy/PostActionAsync',
type: 'POST',
data: { confirmKey: that.confirmKey },
dataType: 'json',
xhrFields: { withCredentials: true },
success: function (data) {
............
},
error: function (jqXHR, textStatus, errorThrown) {
............
}
});
UPD. Résolu en ajoutant [FromBody]
à mes paramètres dans la méthode d'action comme dans la réponse de J. Steen, il est maintenant l'air est comme
public class ProxyController : ApiController {
public async Task<HttpResponseMessage> PostActionAsync([FromBody]string confirmKey)
{
var someModel = new SomeResultModel(User.Identity.Name);
await Task.Factory.StartNew(() => someModel.PrepareModel(confirmKey));
return Request.CreateResponse(HttpStatusCode.OK, someModel);
}
}
Et ça marche!
Postez aussi votre méthode 'ActionResult' et le nom du contrôleur. Si possible, votre appel asynchrone appelant Jquery aussi., :) – RajeshKdev
ajouté tout requis –
@IgorKonopko: Essayez de marquer l'action avec '[HttpPost]' – Catalin