web-dev-qa-db-ja.com

IIS特定のファイル拡張子を提供できない

.JSONファイルを提供していますが、ファイルは存在しますが、ファイルにアクセスするとIISが404エラーをスローし続けます。ファイルの1つを.JSに名前変更してみました。動作します。

どのような設定がこの問題を引き起こす可能性がありますか?

9
Adrian Godong

既定では、IISは、知っているMIMEタイプではないファイルを提供しません(代わりに404エラーを返します)。

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

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

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

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

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

For IIS 7: Open IIS manager。Click theserverまたはWebサイト。MIMEタイプ機能アイコンをダブルクリックします。[アクション]ウィンドウで、[追加]をクリックします「ファイル名拡張子」ボックスに*を入力し、「MIMEタイプ」ボックスに「application/octet-stream」を入力します。

3
Eric Falsken

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

2
neildeadman

回答をもう1つの一般的な回答に統合するには:

ここで警告があります:

  • Unlessスクリプトハンドラ(アクティブコンテンツエンジン、たとえば、ASP/ASPX/PHP/Java/ISAPI/etc)が関連付けられている場合を除きます。
    • これは、IISがそれらを静的ファイルではなくアクティブコンテンツとして扱うことを意味します
  • 拡張機能によって提供されるアクティブコンテンツファイルは、Webサービス拡張機能の制限リストで許可された拡張機能を持っている必要があります(別名IIS 7)のISAPI/CGI制限)
    • IIS 7のアクティブコンテンツタイプで404を取得している場合は、ハンドラがインストールされていない可能性もあります。そのため、そのファイル拡張子をサポートするコンポーネントを実際にインストールする必要があります(たとえば、.aspxファイルが404を生成する場合、ASP.Netがインストールされていない可能性があります)

この種の問題が発生している場合は、WebサイトのWebログファイルを開き、サブステータスコード(404 3など)を確認して、WebサイトがIIS 6、または

  • 失敗した要求トレースを使用する
  • (またはローカルコンソールの詳細なエラーのみ)

IIS 7。

1
TristanK

私にもこの問題がありました-そして、問題はjsonファイルが保存されているフォルダーのファイル権限であることが判明しました。 同様の質問はこちら に回答しました。

これらの人々はすべて、MIMEタイプを追加する必要があると言って間違いありません。

MIMEタイプはサーバー上のファイル拡張子を有効にし、マッピングハンドラーはIISでそれをどうするかを指示します。

したがって、 マッピングハンドラーを追加する も必要です。そのためには、マッピングを処理するために、Windowsの機能 Classic 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リセットする必要はありません。

また、一部の人々は、 `application/x-javascript 'をmimeタイプのアプリケーションとして使用するように指示しますが、JSONはjavascriptではありませんper se(それはisサブセットですが)、JSONのIANA登録メディアタイプであるため、代わりに「application/json」にする必要があります。

1
bgmCoder