web-dev-qa-db-ja.com

IISを使用するASP.NET Core-HTTP動詞は許可されません

ASP.NET Core 2. Webサイトには、UIを強化するための簡単なWeb APIメソッドもいくつかあります。

Web API呼び出しは、ローカルでIIS Expressの下で実行しているときは正常に機能しますが、IIS 8.5本番Webサーバーにデプロイすると、 HTTP DELETEおよびPUTリクエストを行う際の次のエラー...

405 Method Not Allowed

いくつかのWeb検索の後、IIS WebDAVモジュールの削除を提案する投稿がいくつか見つかりました。 IIS(これはサーバーです)でこれを無効にし、次のことも試しました。

  • 無効WebDAV
  • 有効WebDevおよび設定Allow verb filtering = False
  • Hander Mappingsを設定して、Request Restrictions設定でAll Verbsを許可します:aspNetCoreWebDAVおよびExtensionlessUrlHandler-Integrated-4.0

上記の手順のいずれも、問題を解決していません。

どんなアドバイス/指示も大歓迎です。

27
Neilski

数時間の調査と試行錯誤の後、修正は非常に簡単なようです。 Web.configファイルを。NET Core 2.アプリケーションに追加します。

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

お役に立てれば。

37
Neilski

これが私のために働いたものでした(netcore 2.0)

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

ここにあります: https://www.ryadel.com/en/error-405-methods-not-allowed-asp-net-core-put-delete-requests/

33
Manuel Alves

IISサーバーからWebDAV発行を削除します。そのインターネット情報サービスの下に来る->一般的なHTTP機能

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

3
uthayathasan

WebDavがまったく有効にならないようにするには、-removeApplicationHost.configからの次のエントリ:

<add name="WebDAVModule" /> 

エントリはモジュールセクションにあります。

構成の正確な場所:
C:\ Windows\System32\inetsrv\config\applicationHost.config

これは、.Net Core 2.1でうまく機能しました

3
Yush0

私にとっては、APIではなくクライアントドメインに投稿しようとしていることに気づいた後、問題を解決しました。 [facepalm]

0
Eric