IISは特定のファイル拡張子をサポートしません

IISは特定のファイル拡張子をサポートしません

Win 2k3 サーバーと IIS でこの奇妙な問題が発生しています:

Iis には複数のサイトがあり、そのうちの 1 つにサブディレクトリを作成し、それを Web アプリケーションとして設定する必要があります。新しいディレクトリを作成し、そこに .js/.txt ファイルをいくつか配置すると、IIS によって提供されないことに気付きました (IE で「Internet Explorer は Web ページを表示できません」というエラーが表示されます)。

同じファイルを別の古いサイトのサブディレクトリに置くと、正しく表示されます。

トラフィックをスニッフィングすると、IISが接続状態200を返して、その後接続を完全に切断することがわかりました。

http://domain.com/test2/prova.txt

GET /test2/prova.txt HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK

たとえば、prova.asp 内のファイル prova.txt の名前を変更すると、問題なく表示されるので、アクセス許可の問題ではないはずです。

いくつか調査した後、MIME タイプが欠落していることが原因であることが分かりました。.txt と .js が存在し、aspnet_isapi.dll によって提供されていることを確認しました。そして、ここでもう 1 つ奇妙なことが起こります。ディレクトリのプロパティから MIME マッピングを削除すると、正しく提供されますが、js では同じことが機能しません。

本当にアイデアが尽きかけているのですが、何かヒントを持っている人はいませんか?

前もって感謝します。

答え1

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

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

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

.NET アプリケーションを作成する場合は、web.config ファイルでも同じ操作を実行できます。

答え2

これらの拡張機能を aspnet_isapi.dll にマップしたので、ASP.NET にそれらを処理するように指示する必要があります。IIS 部分は正しく実行されました。

これは、httpHandlers で設定する必要がある PageHandlerFactory です。詳細に説明されている次のページを見つけました:翻訳元:

関連情報