J'essaie d'héberger une application Web ASP.NET MVC4 avec IIS 7.5. Lors du débogage de l'application, tout fonctionne correctement (je suppose que c'est à cause de l'authentification Windows). Cependant, lorsque je publie l'application et que je navigue dans celle-ci, une erreur de méthode 405 non autorisée apparaît:
POST http://localhost/ 405 (Method Not Allowed)
send
i.extend.ajax
i.(anonymous function)
(anonymous function)
D'après ce que j'ai lu, c'est soit un problème de mappages de gestionnaires dans IIS, soit une configuration est nécessaire dans le fichier web.config. Quoi qu’il en soit, je n’ai pas trouvé la bonne solution. Quelqu'un pourrait-il me dire ce que mon script de configuration Web devrait inclure dans tous les POSTS? Et/ou comment configurer le mappage Handler correct dans IIS, alors que je suis novice dans le développement Web et que je trouve le nombre d’options un peu écrasant.
Le morceau de javascript qui lève l'erreur est le suivant:
$.post("/", { latitude: locLat, longitude: locLon, username: $('#onlineUsers').attr('itemid') });
Un 405 est lancé par IIS lorsqu'un verbe HTTP (GET, PUT, POST, DELETE, HEAD, etc.) est demandé et n'est pas pris en charge/interdit par le gestionnaire désigné.
Vous devez ouvrir le IIS manager -> Site Web par défaut -> Mappages de gestionnaires (ou les mappages de gestionnaires spécifiques à votre application Web).
Ici, vous devrez jouer avec les mappages de gestionnaires, car l’un d’eux n’autorise pas les verbes "POST".
Comme vous ne publiez pas sur une page spécifique (.aspx, .ashx, etc.), il sera difficile d'identifier le gestionnaire exact qui vous cause des problèmes.
Les gestionnaires d’intérêt peuvent être:
Une fois que vous avez identifié le gestionnaire auquel votre demande est acheminée, double-cliquez dessus pour ouvrir la boîte de dialogue.
A partir de là, cliquez sur "Demander des restrictions", puis sur "Verbes".
Assurez-vous que le verbe approprié est présent dans la zone de texte.
Comme je l'ai déjà mentionné, je ne sais pas quel gestionnaire traite votre demande, car vous n'enregistrez aucune page sur une page en particulier (vous pouvez avoir une réécriture d'URL en place qui achemine votre demande de manière appropriée).
Si les opérations ci-dessus échouent, vous devrez peut-être vérifier si WebDAV Publishing est installé et le supprimer (redémarrage requis).
Peut-être devriez-vous modifier votre format post'URl comme ceci:
$.post('@Url.Content("~/Attach/UpdateAttach")'
certains utilisateurs utilisent un hébergement partagé et non des serveurs dédiés. Par conséquent, ils risquent de ne pas pouvoir accéder au panneau de configuration IIS.
c'est mon cas et voici ce que j'ai trouvé ..
J'ai mon application Web sur le répertoire racine créé via le panneau de configuration de Godaddy .. et la demande POST est reconnue ..
puis j’ai utilisé FileZilla pour créer un dossier de test pour mon jquery .. (remarquez que j’utilisais FileZilla, l’application Web et donc le IIS de GoDaddy ne sont pas conscients que je voulais que ce dossier fasse partie de mes nous appliquons)
puis chaque fois que je teste ce jQuery sur ce dossier de test .. je reçois cette erreur [405 Method not allowed] ..
la solution était extrêmement simple:
J'ai déplacé ma page de test de ce dossier de test créé par FileZilla et je l'ai localisée dans un dossier créé via le panneau de configuration de Godaddy (dans ce cas, le IIS sera informé du fait que cette page fait partie de mon application Web. :))
J'espère que cela aidera les utilisateurs de l'hébergement mutualisé