HTTP 404 Page Not Found in Web Api hosted in IIS 7.5の解決方法…

HTTP 404 Page Not Found in Web Api hosted in IIS 7.5の解決方法【2025年最新版】

エラーの概要・症状

このエラーメッセージ「HTTP 404 Page Not Found」は、IIS 7.5上でホストされているWeb APIにアクセスしようとした際に発生します。このエラーは、リクエストしたリソースが見つからないことを示しています。具体的には、URLが間違っている、リソースが削除された、またはサーバーの設定が不適切な場合に発生します。

このエラーが発生すると、ユーザーはWeb APIにアクセスできず、アプリケーションの機能に影響を及ぼします。特に、開発中のアプリケーションやAPIを利用するクライアントアプリケーションにとっては致命的な問題です。404エラーはユーザーにとっても混乱を招くため、早急な対処が求められます。

このエラーが発生する原因

HTTP 404エラーの原因は多岐にわたりますが、以下の主要な原因が考えられます。

  1. URLの誤り: 最も一般的な原因は、アクセスしようとしているURLが正しくない場合です。Typoが含まれている、または意図したパスが変更された可能性があります。

  2. リソースの削除または移動: アプリケーションが依存しているリソース(例えば、APIエンドポイント)が削除されたり、異なる場所に移動された場合も404エラーが発生します。

  3. IISの設定ミス: IISの設定が正しくないと、Web APIが正しく動作しないことがあります。特に、URLルーティングやモジュール設定に問題があると404エラーが発生することがあります。

  4. WebDAVの干渉: WebDAVが有効になっている場合、特定のリクエストがブロックされ、404エラーが返されることがあります。

  5. ASP.NETの未登録: IISにASP.NETが正しく登録されていない場合、リクエストが処理されず404エラーが発生することがあります。

解決方法1(最も効果的)

手順1-1: Web.configの設定変更

IISのWeb.configファイルを編集して、以下の設定を追加または修正します。これにより、必要なハンドラーとモジュールを有効にします。

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

この設定により、IISがすべてのリクエストを正しく処理できるようになります。特に、runAllManagedModulesForAllRequeststrueに設定することで、すべてのリクエストに対してマネージモジュールが実行されるようになります。

手順1-2: 応答設定の確認

次に、IISマネージャーを開いて、該当のサイトの「応答」設定を確認します。適切なHTTP応答が設定されているか、カスタムエラーページが適切に設定されているかを確認してください。

注意点とトラブルシューティング

  • 設定変更後はIISを再起動して変更を適用することを忘れないでください。
  • 404エラーが解消されない場合は、IISのログを確認して、どのリクエストが失敗しているかを確認します。

解決方法2(代替手段)

WebDAVの無効化

場合によっては、WebDAVが原因で404エラーが発生することがあります。この場合、WebDAVを無効にすることが有効です。以下の手順でWebDAVを無効にします。

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

  2. 「機能ビュー」で「WebDAV」を探し、右クリックして「無効にする」を選択します。

  3. サイトを再起動し、再度リクエストを試みます。

モジュールの追加

Web.configに以下の設定を追加することも有効です。

<modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>

この設定により、URLルーティングが正しく機能するようになります。特にMVCアプリケーションを使用している場合は重要な設定です。

解決方法3(上級者向け)

ASP.NETの手動登録

ASP.NETがIISに正しく登録されていない場合、以下の手順で手動登録を行います。

  1. 管理者としてコマンドプロンプトを開きます。

  2. 以下のパスに移動します(64ビットの場合):

   cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
  1. 次に、以下のコマンドを実行します:
   aspnet_regiis.exe -i
  1. IISを再起動します。

この手順により、ASP.NETがIISに登録され、正しく動作するようになります。

エラーの予防方法

エラーを未然に防ぐためには、以下の対策が有効です。

  1. URLの管理: アプリケーションのURL構造を明確にし、ドキュメントとして残しておくことで、誤ってURLを変更するリスクを減らします。

  2. 定期的なメンテナンス: 定期的にIISの設定を確認し、不要なモジュールや設定が無効になっているかを確認します。

  3. エラーログの確認: IISのログを定期的に確認し、404エラーが発生していないかをチェックします。問題があれば早急に対応します。

関連するエラーと対処法

  • **500 Internal Server Error**: サーバー内部の問題を示します。このエラーが発生した場合、IISの設定やアプリケーションのログを確認して、原因を特定する必要があります。
  • **403 Forbidden**: アクセス権の問題を示します。必要な権限が設定されているかを確認します。

まとめ

HTTP 404エラーは、IIS 7.5でホストされているWeb APIにおいて、リソースが見つからない場合に発生します。原因としては、URLの誤りやIISの設定ミスなどが考えられます。解決方法としては、Web.configの設定変更やWebDAVの無効化、ASP.NETの手動登録が有効です。エラーを未然に防ぐためには、定期的なメンテナンスとエラーログの確認が重要です。次のステップとして、実際に設定を確認し、必要な修正を行ってください。

コメント

タイトルとURLをコピーしました