5 votes

Le serveur Nuget répond par (405) Method Not Allowed lors de l'ajout ou de la suppression d'un paquet.

J'obtiens une erreur (405) Method Not Found lorsque j'essaie de pousser un paquet vers mon serveur Nuget hébergé localement (paquet Nuget.Server) hébergé sur IIS 7.5 sur Windows 2008 R2 Enterprise.

Un site IIS dédié est configuré pour le serveur Nuget (appelé Nuget) et relié à un port spécifique (81 pour l'anecdote).

Le pool d'applications est configuré pour être .NET Framework 4.0 et est en mode Pipeline intégré.

Je comprends qu'il faut activer les verbes PUT et DELETE, mais je ne sais pas du tout quel handler est responsable du traitement des requêtes Nuget.

4voto

Norman H Points 1298

En mode pipeline intégré, le gestionnaire correct est le gestionnaire svc-Integrated-4.0.

Je l'ai découvert par tâtonnement et en lisant les documents de la code source du serveur Nuget sur Codeplex .

Cet article explique comment ASP.NET traite vos demandes. est également très utile pour comprendre ce qui se passe sous les couvertures.

En outre, pour que cette réponse soit correcte, vous devez vous assurer que le pool d'applications se trouve dans la section Pipeline intégré et non Classique mode.

La section de votre Web.config qui devra être modifiée est indiquée ci-dessous, en particulier la liste des verbes qui sont désormais pris en charge.

<system.webServer>
    <handlers>
        <remove name="svc-Integrated-4.0" />
        <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
        <add name="svc-Integrated-4.0" path="*.svc" verb="GET,PUT,POST,DELETE,DEBUG" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

3voto

Dmitry B. Points 529

Ajout <remove name="WebDAVModule" /> a system.webServer/modules a bien fonctionné pour moi.

2voto

SchlaWiener Points 9682

Je viens de rencontrer ce problème. Bien que la plupart des erreurs soient liées à des changements de configuration, il est utile de mentionner que cette erreur se produit également si vous spécifiez simplement un nom d'hôte et non une url.

erronée :
nuget push MyPackage.1.0.nupkg -Source nuget.company.org -ApiKey ...

droite :
nuget push MyPackage.1.0.nupkg -Source http://nuget.company.org -ApiKey ...

Erreur stupide

1voto

sawe Points 346

WebDAV pose également un problème en ce qui concerne la poussée des paquets, et comme décrit ici désactiver WebDAV Vous pouvez désactiver webdev via web.config.

Assurez-vous également que l'utilisateur IIS de votre pool d'applications dispose d'autorisations d'écriture dans le dossier Packages au sein de la structure de dossiers du serveur Nuget.

Enfin, assurez-vous d'avoir spécifié la clé api, ou ajoutez la clé appsettings

<add key="requireApiKey" value="false" />

0voto

Ian Mercer Points 19271

Pour tous ceux qui arrivent ici à partir d'un moteur de recherche et qui obtiennent une erreur 405 alors qu'ils ne font pas tourner leur propre serveur Nuget : une autre cause d'erreur 405 est tout simplement un Nuget.exe obsolète. Vérifiez la version de votre nuget.exe et mettez-la à jour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X