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


10

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

この問題を引き起こす可能性のある設定はありますか?

回答:


21

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

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

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

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

私は新しいMIMEタイプを追加し、Webサイトを再起動しますが、それでも404です。おかげでとにかく、これは問題の1つかもしれないと思います。
エイドリアン・ゴドン

うーん。変更内容を再確認してください。「ファイルの名前を変更して機能した」という症状は、この動作の典型的な指標です。
エヴァンアンダーソン、

トリプルチェック。サーバー全体を再起動する必要はないと思いますよね?
エイドリアン・ゴドン

ええと、私はあなたに何をすべきかを言うのに苦労しています。私はWindows Server 2003 SP2のクリーンなVMで自分でやっただけです。IISをインストールし、「foo:json」ファイルを「C:\ inetpub \ wwwroot」に作成し、ブラウザで「localhost / foo.json」を押すと404が返されることを確認し、「。JSON」のMIMEタイプを追加しました"/" application / json "をサイトに送信してから、まだ開いているIEウィンドウに移動してF5キーを押し、ページが読み込まれるのを確認しました。あなたも何か他のものを持っていると思います。
エヴァンアンダーソン

1
また、これを機能させるためにWebサービス拡張が有効になっていることを確認する必要がありました...
gandalf

3

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

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

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



1

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

ここで警告があります:

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

この種の問題が発生している場合は、WebサイトのWebログファイルを開き、サブステータスコード(404 3など)を調べて、WebサイトがIIS 6のコンテンツを提供していない理由を正確に特定します。

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

IIS 7。


この「警告」は意味をなさない:「...これは、IISが静的ファイルではなくアクティブコンテンツとして扱うことを意味します」Web.configはjsonファイルを静的として宣言します:<staticContent> <mimeMap fileExtension = "。json" mimeType = "application / json" /> </ staticContent>

「IISは、スクリプトハンドラーが関連付けられていない限り、MIMEタイプが関連付けられていない静的ファイルを提供しません」は、真のステートメント(IMO)として機能します。誰かがサービスを提供できない場合、彼らの設定ファイルにはどこにもこの定義がないようです。おそらくあなたのWindowsのコピーは彼らのものより新しいですか?
TristanK 2014

1

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

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

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

したがって、マッピングハンドラー追加する必要があります。そのためには、マッピングを処理するために、Classic AspというWindows機能をインストールする必要があります。

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

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

また、一部の人々は`アプリケーション/ X-JavaScriptを使用することを教えてくれます」MIMEタイプのアプリケーションとして、しかし、JSONは、JavaScriptのではない、それ自体が(それはあるしかし、サブセット)と、それがあるべきように、『アプリケーション/ JSON』の代わりに、IANAで登録されたJSONのメディアタイプです。


0

IISのリクエストフィルタリングも確認してください。「.json」が存在し、ブロックされている場合、それ以外は機能しません。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.