web-dev-qa-db-fra.com

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

Nous avons un/ ASP.NET Core 2.0 site Web qui présente également quelques méthodes simples Web API à des fins d’amélioration de l’UI.

Les appels API Web fonctionnent comme prévu lors de l'exécution locale sous IIS Express , mais lorsque nous déployons sur notre serveur Web IIS 8.5 production, nous obtenons ce qui suit erreur lors des requêtes HTTP DELETE et PUT ...

405 Method Not Allowed

Après quelques recherches sur le Web, nous avons trouvé plusieurs publications suggérant la suppression du module IIS WebDAV . Nous l'avons désactivé dans IIS (c'est notre serveur) et nous avons également essayé les solutions suivantes:

  • Désactivé WebDAV
  • Activé WebDev et définir Allow verb filtering = False
  • Définissez Hander Mappings pour autoriser Tous les verbes dans les paramètres Request Restrictions pour: aspNetCore, WebDAV et ExtensionlessUrlHandler-Integrated-4.0

Aucune des étapes ci-dessus n'a résolu notre problème.

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

16
Neilski

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

<?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.

19
Neilski

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/fr/error-405-methods-not-allowed-asp-net-core-put-delete-requests/

15
Manuel Alves

Pour empêcher l'activation de WebDav, supprimez l'entrée suivante dans ApplicationHost.config

<add name="WebDAVModule" /> 

L'entrée est située 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

2
Yush0

Supprimez la publication WebDAV du serveur IIS. Il entre dans le service Internet Infromation -> Fonctionnalités HTTP communes

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

1
uthayathasan