5

J'ai créé un contrôleur WebApi et j'essaie d'utiliser une requête HttpPost pour soumettre un nouvel utilisateur à l'enregistrement. Cela fonctionne très bien sur mon hôte local, mais lorsque je le publie sur Azure, une erreur de méthode 405 n'est pas autorisée avec le message suivant: "La ressource demandée ne prend pas en charge la méthode http 'GET'".Méthode HTTP POST traitée comme GET sur WebApi

J'utilise postier pour vérifier les actions, et donc je générer le code utilisé pour voir la demande, qui est la suivante:

POST /api/account/register/student HTTP/1.1 
Host: www.l3cture.com 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: 27c1b2ab-96ad-4a99-b271-4030402768e7 

Je peux donc voir clairement que la demande est un POST. Et ce qui suit est le code d'action du contrôleur avec ses attributs (je l'ai ce moment simplifié afin qu'aucun des modèles sont affichés et le même comportement se produit)

[HttpPost] 
[Route("register/student")] 
[AllowAnonymous] 
public async Task<IHttpActionResult> PostStudent(/*RegisterStudent model*/) 
{ 
    //Implementation of register 
    return Ok(); 
} 

J'ai vérifié l'espace de noms des attributs et c'est System.Web.Http, donc il n'est pas confondu avec l'espace de noms MVC. La chose intéressante est que quand je change la méthode pour être HttpGet, et POST pour lui en utilisant postman, je reçois un statut 200. C'est presque comme si les requêtes HttpPost étaient toutes traitées comme HttpGet par mon contrôleur. J'ai utilisé HttpPut et HttpDelete dans d'autres endroits, et ils fonctionnent tous très bien.

Je ne sais pas comment résoudre ce problème et je me demandais si quelqu'un avait des idées? S'il vous plaît laissez-moi savoir si je dois poster plus de code pour la clarification.

Merci à l'avance

+1

Semble fonctionner lorsque j'utilise https au lieu de http. Ceci peut être fermé –

+0

Passez-vous votre modèle dans Body for Post? Vous pensez qu'il vous manque l'attribut [FromBody] dans votre paramètre de méthode. –

+0

J'avais essayé [FromBody] et ça n'avait pas marché. Bien que je l'ai juste essayé en spécifiant https, et cela semble fonctionner. Je devais juste être un idiot pendant un certain temps –

Répondre

10

se trouve que j'utilisais Http, Https au lieu de.

+0

Si c'était vraiment tout ce qu'il y avait à votre problème, vous devriez accepter cette réponse (coche sur la gauche) pour laisser d'autres utilisateurs qui pourraient trouver votre question que c'est la solution. –

+0

Ouais désolé, je ne pouvais pas quand j'ai posté, avait besoin d'attendre deux jours. Merci de me le rappeler –

+0

Pas de soucis! :) –