2017-05-26 2 views
0

Nous avons effectué une nouvelle installation d'IIS 8.5 sur un serveur Windows. Sur IIS, nous avons déployé 4 ou 5 services WCF.IIS Impossible de mettre pour un service spécifique

Certains de ces services ont PUT demandes (la suppression suivra bientôt). Mais nous rencontrons un problème. Sur l'un de ces services, PUT renvoie les erreurs "Méthode non autorisée" 405.

Maintenant, notez que la config pour tous les services concernant les gestionnaires est 100% identique (j'ai vérifié cela plusieurs fois maintenant).

D'autres services consomment aussi PUT Demandes, celles-ci fonctionnent également bien. Quand je fais une demande HEAD avec le facteur je peux seulement voir GET permis pour la demande qui devrait également exister en tant que PUT. (Par exemple, un a un attribut WebGet et un WebInvoke est configuré avec PUT) sur le même URI. Localement lors du débogage à partir de Visual Studio, les demandes PUT fonctionnent très bien, cependant, déployé, nous ne pouvons pas le faire fonctionner pour ce point de terminaison unique.

La seule différence que je vois est que notre PUT demande qui ne fonctionne pas consomme un corps JSON, l'autre ne regarde que params URI ...

+0

https://stackoverflow.com/a/6223774/4074041 –

+0

Je vais étudier, mais WebDav n'est pas installé –

Répondre

0

Vous pouvez ajouter ExtensionlessUrlHandler par web.config comme ça :

<handlers accessPolicy="Read, Script"> 
    <remove name="WebDAV" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" 
     path="*." 
     verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 
     modules="IsapiModule" 
     scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" 
     preCondition="classicMode,runtimeVersionv4.0,bitness64" 
     responseBufferLimit="0" /> 
</handlers> 
+0

Oui, j'ai essayé cela. Notez que cela fonctionne pour d'autres services avec la même configuration –

+0

donc, je peux vous offrir un ** difficile **: vérifier quel gestionnaire reçoit des requêtes POST, et ajouter dans votre web.config 'custom httphandler' avec le gestionnaire standart IIS mais en autorisant la requête "PUT". –

+0

Je vais essayer de comprendre cela. –