L'API Web - 405 - La ressource demandée n'a pas en charge la méthode http PUT
J'ai un projet d'API Web et je suis incapable d'activer l'option "METTRE/Patch" demandes à son encontre.
La réponse que je reçois de fiddler est:
HTTP/1.1 405 Method Not Allowed
Cache-Control: no-cache
Pragma: no-cache
Allow: GET,POST,DELETE
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcUHJvamVjdHNcZG90TmV0XFdlYkFQSVxBZFNlcnZpY2VcQWRTZXJ2aWNlXGFwaVxpbXByZXNzaW9uXDE1?=
X-Powered-By: ASP.NET
Date: Tue, 06 May 2014 14:10:35 GMT
Content-Length: 72
{"message":"The requested resource does not support http method 'PUT'."}
Basée sur la réponse précédente, "METTRE" les verbes ne sont pas acceptés. Cependant, je suis incapable de savoir où se trouve liée gestionnaire est configuré.
Le "" la méthode de classe est déclarée comme suit:
[HttpPatch]
[HttpPut]
public HttpResponseMessage Put(Int32 aID, [FromBody] ImpressionModel impressionModel)
{
bla, bla, bla, bla
}
J'ai lu et mis en œuvre les modifications expliquées dans les threads suivants:
- Asp.NET l'API Web - 405 - HTTP verbe utilisé pour accéder à cette page n'est pas autorisé - comment définir des mappages de gestionnaires
- http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications
Rien n'a fonctionné comme je suis encore en train 405 réponse lorsque vous essayez de publier un "PUT" de commande par rapport à mon projet d'API Web.
J'ai même commenté tous les "Handlers" dans la ApplicationsHost.fichier de configuration.
De travail avec VS2012 Premium et IIS Express (je suppose que c'est la version 8). J'ai aussi essayé la VS Serveur de Dev, mais qui m'a donné le même résultat.
Je suis à court d'idées. Toute aide serait appréciée.
Grâce Lee
OriginalL'auteur LeeVDuhl | 2014-05-06
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de l'attribut de routage?
Ce mystique erreur était une route attributs question. Cette option est activée dans votre WebAPIConfig:
Il s'avère Contrôleurs d'Api Web "ne peut pas accueillir un mélange de verbe d'action axé sur les méthodes traditionnelles et le nom de l'action de routage. "; https://aspnetwebstack.codeplex.com/workitem/184
en un mot: j'avais besoin de marquer l'ensemble de mes actions dans mon API Contrôleur avec la [Route] attribut, sinon l'action est "caché" (405 avais) lorsque vous essayez de localiser traditionnels de routage.
API Contrôleur:
note: mon Parcours est sans nom, de sorte que le CreatedAtRoute() le nom est juste une chaîne vide.
WebApiConfig.cs:
espère que cette aide
+1 pour le lien à la question de CodePlex. Aussi, vous pourriez trouver 2 liens différents pour la solution de contournement possible. Comme la question est close sans qu'un correctif, je préfère gérer ça sans aucune solution de contournement pour éviter à plus de génie de mon site Web API 😉
Merci!!!! Ajout de [Route], MIS de et de la POSTE (c'était manquante) a résolu mon problème. Enfin, des informations importantes sur l'api web de routage!
OriginalL'auteur proggrock
J'ai eu exactement le même problème que vous, et j'ai essayé toutes les choses que vous avez essayé, mais parfois, la solution est triviale et sous votre nez, et que vous ne l'attendez pas et continuer à chercher plus compliqué raisons. Assurez-vous que l'url que vous appelez pour tester votre site web méthodes, les param noms correspondent aux noms dans votre contrôleur de déclaration de la méthode. Ma 405 problème a été résolu par la simple de faire cela (j'ai été en utilisant la requête params):
Mon clientsController:
Sur mon WebApiConfig:
Et le chemin d'accès utilisé pour tester la méthode doit être comme suit: (utiliser le Facteur ou similaire, pour appliquer la bonne méthode web)
Sinon, vous aurez une 405 pour que la méthode http à ce contrôleur. Je n'ai pas besoin de changer le web.config à tous (pas besoin d'enlever webdav, etc..). Vérifier cette de source dans la documentation:
OriginalL'auteur kurt
Ce qui m'est arrivé lorsque j'ai changé le premier paramètre le nom de la méthode PUT
Il devrait être:
Et c'est, comment il s'appelle:
OriginalL'auteur Daniel Cardenas
C'est aussi le message d'erreur renvoyé si vous oubliez de le Mettre() la méthode sur votre API contrôleur public. Ce qui est évident, avec le recul, mais m'a fait une bonne dizaine de minutes de casse-tête.
OriginalL'auteur Dylan Beattie
eu le même problème, j'avais besoin de faire 3 choses pour résoudre ce problème:
<modules>
et<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<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" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
J'espère que cela peut aider certains d'entre vous afin de résoudre ce méchant problème...
OriginalL'auteur Ben Croughs
Cette réponse résolu le problème pour moi. J'ai dû ajouter de la Route de l'attribut et le problème a été résolu.
OriginalL'auteur Dave Storm
Vous devez le configurer dans votre config des serveurs. Cela dépend du type de serveur web, où vous pouvez le faire. Par exemple, IIS, vous pouvez utiliser un site web.fichier de config pour le faire que dans la racine du document. Par la croix-origine des demandes, vous devez ajouter de la SCRO en-têtes de la réponse, à autoriser les origines, les méthodes, etc...
note: Probablement, vous pouvez faire quelque chose à ce sujet avec le ASP.NET cadre en tant que bien, mais je pense que c'est contrairement à.
OriginalL'auteur inf3rno
Ajouter l'article suivant sous Gestionnaire de la section dans le web.config:
Par exemple:
OriginalL'auteur Sulabh Singla
Peut-être qu'il est tard maintenant, mais quelqu'un peut utiliser ce fichier.
Je voulais utiliser des requêtes PUT et je viens d'envoyer stringified objet de l'api web et dans la méthode put seulement accepté cet objet.
JQUERY
API WEB
OriginalL'auteur Serlok