69 votes

ASP.NET Core avec IIS - Verbe HTTP non autorisé

Nous avons une ASP.NET Core 2.0 site web qui présente également un couple de simples API Web méthodes de l'INTERFACE utilisateur des fins d'amélioration.

L' API Web appels fonctionnent comme prévu lors de l'exécution localement sous IIS Express, mais lorsque nous déployons pour nos IIS 8.5 serveur web de production, on obtient l'erreur suivante lors de la prise de HTTP DELETE et PUT des demandes...

405 Method Not Allowed

Après quelques recherche sur le web, nous avons trouvé plusieurs postes ce qui suggère la suppression de l'IIS WebDAV module. Nous avons désactivé cette option dans IIS (il est de notre serveur), et nous avons aussi essayé le suivant:

  • Désactivé WebDAV
  • Permis WebDev et définissez Allow verb filtering = False
  • Définir le Virage des Mappages pour permettre à Tous les Verbes à la Demande des Restrictions paramètres: aspNetCore, WebDAV et ExtensionlessUrlHandler-Integrated-4.0

Aucune des étapes ci-dessus ont résolu notre problème.

Tout conseil/direction serait très apprécié.

77voto

Manuel Alves Points 192

C'est ce qui a fonctionné pour moi (netcore 2.0)

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
</system.webServer>

Trouvé ici: https://www.ryadel.com/en/error-405-methods-not-allowed-asp-net-core-put-delete-requests/

69voto

Neilski Points 843

Après des heures de recherche et d'essais et d'erreurs, le correctif semble être assez simple. Ajoutez un fichier Web.config à votre application .NET Core 2.0 :

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- To customize the asp.net core module uncomment and edit the following section. 
         For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
    <system.webServer>
        <modules>
            <remove name="WebDAVModule" />
        </modules>
        <handlers>
            <remove name="aspNetCore" />
            <remove name="WebDAV" />
            <!-- I removed the following handlers too, but these
                 can probably be ignored for most installations -->
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <remove name="OPTIONSVerbHandler" />
            <remove name="TRACEVerbHandler" />

            <add name="aspNetCore" 
                 path="*" 
                 verb="*" 
                 modules="AspNetCoreModule" 
                 resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="%LAUNCHER_PATH%" 
                    arguments="%LAUNCHER_ARGS%" 
                    stdoutLogEnabled="false"
                    stdoutLogFile=".\logs\stdout" />
    </system.webServer>
</configuration>
 

J'espère que cela t'aides.

7voto

Pascal Zanitti Points 1

Pour empêcher WebDav d'être activé, supprimez l'entrée suivante du fichier ApplicationHost.config :

 <add name="WebDAVModule" /> 
 

L'entrée se trouve dans la section modules.

Emplacement exact de la configuration:
C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config

Cela a bien fonctionné pour moi dans .Net Core 2.1

6voto

uthayathasan Points 31

Supprimez la publication WebDAV du serveur IIS. Son sous le service d'Infromation Internet -> Caractéristiques Http communes

https://ignas.me/tech/405-method-not-allowed-iis/

1voto

Eric Points 2410

Pour moi, j'ai résolu le problème après avoir remarqué que j'essayais de publier sur le domaine client au lieu de l'API. [facepalm]

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