IIS は特定のファイル拡張子を処理できません

IIS は特定のファイル拡張子を処理できません

.JSON ファイルを提供していますが、ファイルが存在するにもかかわらず、ファイルのいずれかにアクセスすると IIS が 404 エラーをスローし続けます。ファイルの 1 つを .JS に名前変更してみたところ、うまくいきました。

この問題の原因となる設定について何かご指摘はありますか?

答え1

デフォルトでは、W2K3 以降の IIS は、認識している MIME タイプではないファイルは提供しません (代わりに 404 エラーを返します)。

IIS に MIME タイプを追加して、そのタイプのファイルを提供できるようにする必要があります。これは、サイト レベルまたはサーバー レベルで設定できます。

サーバー全体にこれを設定するには:

  • IISマネージャーでサーバーのプロパティを開き、MIMEタイプをクリックします。
  • 「新規」をクリックします。拡張子に「JSON」、MIME タイプに「application/json」と入力します。

答え2

私も同じ問題を抱えていました。IIS は MIME タイプ フィルタリングと呼ばれる処理を実行します。特定のファイル拡張子の MIME タイプがわからない場合は、404 エラーを返します。

IIS <7 の場合: サイト(またはサーバー)のプロパティを開きます。HTTP ヘッダータブをクリックしますMIME タイプボタン。MIME タイプ「application/octet-stream」のファイル タイプ * を追加します。

IIS 7 の場合: IISマネージャーを開きます。サーバまたはウェブサイト。MIME タイプ機能アイコンをクリックします。アクションウィンドウで、追加「ファイル名拡張子」ボックスに * を入力し、「MIME タイプ」ボックスに「application/octet-stream」を入力します。

答え3

ブラウザでテキストとして表示するために、IIS のサイトにMIME タイプ.json-を追加しました。text/json

答え4

私も同じ問題を抱えていましたが、問題はjsonファイルが保存されているフォルダのファイル権限にあることが判明しました。同様の質問はこちら

これらの人々が、MIME タイプを追加する必要があると言うのは正しいです。

MIME タイプにより、サーバー上のファイル拡張子が有効になり、マッピング ハンドラーは IIS にそのファイル拡張子の処理方法を指示します。

だからあなたもマッピングハンドラを追加する、そのためにはWindowsの機能が必要ですクラシックASPがインストール済みマッピングを処理するためです。

マッピング ハンドラーを追加する方法は次のとおりです。

  1. IIS7マネージャーを開く
  2. IISサーバーのプロパティに移動します(グローバル設定が必要ない場合は、サイトのみに移動します)。
  3. クリックHandler Mappings
  4. クリックAdd a Script Map
  5. プロパティを入力します:
    • リクエストパス:*.json
    • 実行可能:C:\WINDOWS\system32\inetsrv\asp.dll
    • 名前: JSON(好きな名前で構いません)
  6. [OK] をクリックすると完了です。動作が開始され、IIS をリセットする必要はありません。

また、MIMEタイプのアプリケーションとして「application/x-javascript」を使用するように言う人もいますが、JSONはjavascriptではありません。それ自体(それただし、これはサブセットであり、JSON の IANA 登録メディア タイプであるため、代わりに「application/json」を使用する必要があります。

関連情報