Activer les requêtes Http PUT sur .NET MVC
Je travaille sur une application MVC. Sur mon projet initial du service, j'avais cette méthode dans un de mes contrôleurs:
[AcceptVerbs(HttpVerbs.Post)]
[ActionName("UpdateRelationship")]
public ActionResult UpdateRelationship(string aParameter)
Et qui fonctionnait bien. Dans la dernière révision, j'ai demandé de changer cela dans une requête PUT, pour la différencier d'une même ajouter un mécanisme qui utilise des post. Alors je l'ai changé à cela:
[AcceptVerbs(HttpVerbs.Put)]
[ActionName("UpdateRelationship")]
public ActionResult UpdateRelationship(string aParameter)
Et du coup j'obtiens une erreur 404 sur mes demandes, tout à partir de seulement changer le AcceptVerbs. Dans le regard de l'erreur, il semble comme si IIS est d'essayer de route de la demande comme un standard de formulaires web page plutôt que d'utiliser MVC extensionless url ré-écriture.
Googler cela, il semble qu'une cause commune est que les navigateurs ne permettant pas de METTRE de la demande, mais je ne suis pas à l'aide d'un navigateur pour tester ce - que je suis en utilisant le Violoneux. Il devrait donc y avoir aucun problème. Je pense aussi que les paramètres corrects sont déjà dans le web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="UrlRoutingHandler" />
<remove name="MvcHttpHandler" />
<remove name="WebDAV" />
<add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
<security>
<requestFiltering>
<verbs>
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
Donc, qu'ai-je manqué?
EDIT: Ce code fonctionne sur un des collègues de la machine. De sorte qu'il ressemble à mon local de l'installation de IIS comme une faute. Toujours à une perte d'expliquer ce que j'ai besoin de changer bien des idées?
Cheers,
Matt
source d'informationauteur Matt Thrower
Vous devez vous connecter pour publier un commentaire.
J'ai dû enlever le Module WebDav tout à fait indiqué dans ce blog
Après beaucoup de recherches en vain et impasses impliquant WebDAV j'ai trouvé la réponse sur l'autre, de SORTE site de la famille 🙂
https://serverfault.com/questions/93424/how-to-enable-put-and-delete-in-iis7
La configuration qui a fonctionné pour nous a été la suivante.
Ce qui est spécifique à l'extension de moins Url.
BTW, la recommandation générale est de définir runAllManagedModulesForAllRequests = false.