Skip to Content
新しいバージョン 12 を公開しました 🎉

IIS WebDAV の構成

Babel Licensing Service を Internet Information Services(IIS)でホストしている場合、サーバーで WebDAV が有効になっていると、API コールバックで問題が発生することがあります。このドキュメントでは、こうした競合が発生する理由と、それを解決するための構成手順を説明します。

WebDAV の競合について

WebDAV(Web Distributed Authoring and Versioning)は、Web サーバー上での共同編集とファイル管理を可能にする HTTP の拡張です。IIS で有効にすると、WebDAV は次のような特定の HTTP メソッドをインターセプトします。

  • PUT
  • DELETE
  • PROPFIND
  • PROPPATCH
  • MKCOL
  • COPY
  • MOVE
  • LOCK
  • UNLOCK

Babel Licensing Service は、さまざまな HTTP メソッド、特に PUT と DELETE に依存する RESTful API の方式を採用しています。WebDAV が有効になっていると、これらの要求は Babel Licensing Service アプリケーションに届く前に WebDAV によって処理されてしまい、API コールバックが失敗します。

WebDAV による干渉の症状

次のような場合は、WebDAV の競合が発生している可能性があります。

  • API コールバックが 405(Method Not Allowed)エラーで失敗する
  • API への PUT 操作と DELETE 操作が予期しない応答を返す
  • Babel Licensing Service を通じてデータを保存または更新できない
  • 他の API 操作は正しく動作するが、一部の更新操作と削除操作が失敗する

WebDAV の競合の解決

Babel Licensing Service が IIS で正しく動作するようにするには、このアプリケーションで WebDAV を無効にする必要があります。web.config ファイルに次の構成を追加するか、既存の内容を次のように変更します。

<configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\Babel.Licensing.Service.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration>

主な構成要素

  1. WebDAV モジュールの削除:

    <modules> <remove name="WebDAVModule" /> </modules>

    これにより、WebDAV がモジュールレベルで HTTP 要求をインターセプトしなくなります。

  2. WebDAV ハンドラーの削除:

    <handlers> <remove name="WebDAV" /> <!-- other handlers here --> </handlers>

    これにより、使用される HTTP 動詞に関係なく、ASP.NET Core ハンドラーがすべての HTTP 要求を受け取ります。

web.config の配置

この web.config ファイルは、必ず Babel Licensing Service アプリケーションのルートフォルダーに配置してください。

サイト単位の構成とグローバルな構成

上の構成は、Babel Licensing Service アプリケーションに対してのみ WebDAV を無効にします。同じサーバー上の他のアプリケーションで WebDAV の機能が必要な場合でも、この方法なら必要なところだけを選んで無効にできます。

IIS サーバー全体で WebDAV を無効にしたい場合は、IIS マネージャーから設定できます。

IIS マネージャーを開く

IIS マネージャーを開きます。

サーバーを選択する

「Connections」パネルでサーバーを選択します。

WebDAV Authoring Rules を開く

「WebDAV Authoring Rules」(WebDAV オーサリング規則)をダブルクリックします。

WebDAV を無効にする

「Actions」パネルで「Disable WebDAV」をクリックします。

構成の検証

構成の変更を適用したら、次の手順を実行します。

アプリケーションプールを再起動する

Babel Licensing Service のアプリケーションプールを再起動します。

API コールバックをテストする

以前に失敗していた API コールバックをテストします。

データ操作を検証する

データの保存と更新が正しく機能することを検証します。

トラブルシューティング

これらの変更を適用しても問題が続く場合は、次のことを行ってください。

  1. アプリケーションプールが再起動されていることを確認する
  2. IIS のログにエラーメッセージがないか確認する
  3. web.config の構文が正しいことを検証する
  4. サーバーに WebDAV モジュールが実際にインストールされていることを確認する(インストールされていなくても、削除のディレクティブを残しておいて問題ありません)
  5. アプリケーションログに API 関連のエラーがないか調べる

さらにサポートが必要な場合は、IIS サーバーのバージョンと構成の詳細を添えて、Babel Licensing Service のサポートにお問い合わせください。

Last updated on