ASP MVC contrôleur de l'action "404 not found" erreur lors de l'décorées avec [HttpPost]

J'ai un contrôleur de l'action méthode qui fonctionne quand il ressemble à ceci:

public ActionResult testMethod(int id)
{
    //do something...
    //return something...
    return View();
}

Mais quand je précise qu'il faut un "Post" la méthode, j'ai une erreur 404 not found':

[HttpPost]
public ActionResult testMethod(int id)
{
    //do something...
    //return something...
    return View();
}

J'ai d'autres contrôleur de méthodes d'action dans le même contrôleur - POST et GET, et qu'ils fonctionnent très bien. Mais celui-ci ne l'est pas? Ce qui se passe? (Je suis sûr que je suis absent quelque chose d'évident ici...)

Mise à jour:
Un appel ajax demandes de la méthode de contrôleur:
var id = 1;

$.ajax({
    url: '/indices/testMethod/',
    data: id,
    type: 'POST',
    success: function (data) {
        //Do something
    }
});

J'ai aussi essayé de tester la méthode avec le Facteur, s'assurer de la requête POST est envoyé.

Mise à jour 2:
J'ai essayé de changer le paramètre id, et a essayé de s'assurer de méthode et url emplacements immobilisée de match, mais sans aucun effet.

Dans un violon, je peux voir qu'en fait une demande est faite, même si je spécifier une requête POST à l'appel ajax, donc maintenant j'ai besoin de savoir pourquoi la demande finit par être envoyé comme un GET au lieu de POST.

J'ai aussi essayé d'inclure un attribut de la description de l'itinéraire, à l'instar de ce

    [HttpPost]
    [Route("indices/TestMethod/{id:int}")]
    public ActionResult TestMethod(int id)

Et a ensuite essayé de l'appel ajax avec une url différente:

$.ajax({
    url: '/indices/TestMethod/1',
    data: id,
    type: 'POST',
    success: function (data) {
        var tr = 123;
        var yr = data;
        //Do something
    }
});

Avec l'attribut de routage, et le paramètre de la valeur dans l'URL, je vois dans un violon que d'abord une requête POST arrive, qui obtient une 301 statut de l'erreur, mais alors une requête GET est, qui obtient le message d'erreur 404.

Mise à jour 3:
Après plusieurs recherches, j'ai rétréci la définition du problème de manière suffisante qu'il fait sens pour ouvrir une nouvelle question, qui peut être trouvé ici:
ASP MVC, jQuery $.ajax requête POST n'appelle pas la méthode du contrôleur, mais travaille en "frais" projet MVC

Le problème semble être causé par le Contenu de paramètres de Stratégie de Sécurité qui ont été actif pour ce projet.

  • comment avez-vous essayer de contacter cette action?
  • Êtes-vous sûr que la demande est après communique à l'action, et non pas une autre verbe? Installez le Violoneux et d'examiner les données de la demande.
  • ont ajouté quelques informations supplémentaires - pour autant que je sais, une requête POST est envoyé, mais il n'atteint jamais le contrôleur que j'ai une erreur 404.
  • Utiliser un violon pour voir ce qui est réellement envoyé. Vous avez peut-être l'appel de l'URL erronée - vous à l'aide d'une url relative à la racine, et non pas la page en cours. Si votre site est hébergé, par exemple, dans http://someroot/somesubsite, votre code d'appel http://someroot/indices/testMethod/, pas http://someroot/somesubsite/indices/testMethod
  • Vous pouvez éviter URL ambiguïtés en utilisant @Html.ActionLink pour générer la cible de l'ULR en fournissant le contrôleur et l'action des noms
  • vous êtes de passage dans la param1 paramètre, car il est requis?
  • Si vous modifiez le type à GET dans votre dernier exemple et utiliser la même URL dans jQuery, la méthode est alors appelé? Et avez-vous essayé d'utiliser $.post au lieu de $.ajax, juste pour être sûr de ne pas manquer d'aucune configuration supplémentaire?
  • Quand j'ai changer le type à OBTENIR et à utiliser la même URL, la méthode est appelée. À l'aide de $.post au lieu de 4.ajax ne fonctionne toujours pas.
  • Ok, as-tu essayé avec le FromBody-attribut du paramètre? Merci de voir mon jour de réponse.
  • avez-vous essayé de données : {id:1};
  • Avez-vous trouver une solution?