IIS7.5の静的ファイルハンドラーによってスクリプトが提供されない


130

Windows 7 Home PremiumノートブックのIISに最初のWebアプリケーションを展開しようとしました。アプリケーションを作成した後、クラシックアプリプールに変更し、そのプールをフレームワーク4.0に設定する必要がありました。今、私は次のエラーを受け取ります:

HTTPエラー404.17-見つかりません要求されたコンテンツはスクリプトのようであり、静的ファイルハンドラーによって提供されません。

要求されたURLはhttp:// localhost:80 / pvmms / default.aspxです

広範囲にわたるグーグル操作を行っても、私が作業するのに十分な明確または明確な結果が得られなかったと思います。いつものように、私は専門家に依頼しました。

編集: これは、.aspxファイル用のフレームワーク4.0ハンドラーマッピングがないためだと思います。ただし、aspnet_regiisは、管理ユーザーに指を与え、それを実行するには管理者権限が必要だと言っています。

編集#2: 私はすべてのフレームワーク(2&4、32、64)を登録し、すべてが機能するようになりました。これを手動で.aspxaspnet_isapiとvoilaにスクリプトマップを追加して見つけました。私のメモリに障害が発生し、VSのインストール後にのみIISを有効にしない限り、フレームワークのインストールでこれが行われない理由がわかりません。


ここで説明したように別のweb.configファイルでそれを行うstackoverflow.com/questions/2061678/...
bizl

回答:


120

今は遅すぎるかもしれませんが、多くの場合、実行する必要があります

aspnet_regiis.exe -i  

asp.netをインストールした後。多分私はとにかく今それをするでしょう。


17
.NET Frameworkに付属する2つのIIS登録ツールがあります。1つは標準システム用、もう1つは64ビットシステム用です。64ビットシステム用のツールは、Windowsフォルダ内のMicrosoft.NETディレクトリのFramework64ディレクトリにあります。たとえば、C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727にはIIS登録ツールが含まれます。
マシューロック

3
エラーが発生した場合the command is not recognized as an internal or external command。開発者コマンドプロンプトで実行します。
rockXrock 2013年

1
私は、Framework64フォルダーの2.0フレームワークに対してこれを実行する必要がありました。ロックが言っ@matthew何のような
codingNightmares

また、2.0と4.0を実行する必要がある場合は、まず2.0を実行してください。
SouthShoreAK 2014

C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727(x2.0のv2.0の場合)-Framework64をFramework for x86に変更し、v2。*をv4のv4。*に変更(正確な名前の親フォルダーを参照)
ジョン・レバン14

63

上記に加えて、WCFサポートが必要な場合は、次のコマンドを実行する必要があります。

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

v3.0を現在のフレームワークバージョンに置き換えます。


1
他の人へのメモ、4.0アプリプールを使用する
Web

1
.Net 4の場合は、親ディレクトリにあります。例:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev

57

作成したWCFサービスにアクセスしようとすると、IIS 8.5からこのエラーが発生しました。サーバーでWCF HTTPアクティベーション機能が有効になっていないことがわかりました。チェックボックスをオンにして、ウィザード(iisreset)をクリックして作業を開始しました。

Windows機能パネル


1
これは、IIS 8.5とWindows 8.1で私にとってはうまくいきました。質問(HTTP 404.17)で説明されているエラーを取得するASHXを有効にする必要がありました
セルジオA.

ありがとうございました!これでうまくいきました。ただし、私の場合は、古いWebサービスを使用しているため、.NET 2.0で有効にする必要がありました
Stefan Vasiljevic

これは古い投稿ですが、あなたの解決策は私のベーコンを救いました。私はこれを百万年以内に見つけられなかったでしょう...他のどこかで。ありがとうございました。
ジョーシュマッカー2018

48

iis 7.5を使用している場合。

IISマネージャーに移動し、Webサイトのプロパティを開きます。

そこに「ハンドラーマッピング」セクションが表示されます。そのセクションに移動して「staticFile」を検索します。

ほとんどの場合、リストの最後のファイルです。

次に、それを右クリックして、「親に戻す」を選択します。

私がこれに初めて直面したときに私は非常に多くの時間を無駄にしました、とにかくこれはあなたの問題を解決します。


2
Adiの回答:このコマンドは、次のすべてを実行します:c:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC

ヒントをありがとう@Kumar!IIS>サイト> acme.com>ハンドラーマッピング>親に戻す 私の場合は、「staticFile」だけでなく、ドメイン全体に対して行いました。これは私にとってはうまくいき、実行可能ファイル(aspnet_regiis.exe)を実行するよりも簡単で好ましいです。なぜこの提案はさらに上に上がらないのですか?=)
ジミニー2014年

素晴らしいヒント...しかし、そのトッパーがどこから来たのか?以前のバージョンのIISでこれに出会ったことを覚えていません...!
Mike Gledhill、2016年

25

ASP .NET 4.5を使用するWindows Server 2012でこの問題が発生しました。aspnet_regiis.exeを使用できません。役割と機能の追加ウィザードを使用してASP .NET 4.5をインストールする必要があります。

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

サーバーマネージャーの右隅にある[管理]メニューの[役割と機能の追加]メニュー項目を見つけることができます


1
メニュー項目「役割と機能の追加」は、サーバーマネージャーの右隅の「管理」メニューにあります
Alexander Trofimov

16

代替テキスト

私はこのオプションをチェックする必要があります


1
これは、静的コンテンツを提供できるかどうかを設定するだけです。私の問題は、スクリプト要求が静的コンテンツにマップされていることです。これをオフにすると、IISはページのサーバーとしても機能せず、空白を表示します。
ProfK 2010

16

有効にすることでこの問題を解決しました WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

しかし、IISセットアップ全体の構成/推測/試用を確認し、これを確認/試してみる必要があります。アプローチに関する解決策を見つけるために4〜5日を費やしていますが、これは完全かつ正確な方法です。

確かに、「IIS」はこれまでに最も親切に行われた最大の信頼トリックです


1
IISの静的コンテンツ機能を有効にするだけです。これはWCFとは関係ありません。
ProfK 2014年

1
@ProfKは、そのエラーが発生する理由によって異なります。さまざまな原因が原因で同じエラーが発生します。WCFを使用するように構成されたSVCファイルでエラーが発生した場合は、上記で修正されます。
JohnLBevan 2014

LOLは完全に同意し、いくつかのサイトを移植し、実際にはエラーメッセージがまったくないか、非常に不可解なエラーが発生した5種類のエラーを確認しました。例「内部サーバーエラーが発生したため、ページを表示できません」は、既存の静的コンテンツMIMEタイプを追加したことを意味します。
マイクネルソン2016

15

私はこれが古い質問であることを知っていますが、再構築したWindows 8マシンの3.5アプリケーションでこれを取得したばかりで、その後も引き続きこの問題aspnet_regiis -iruが発生し、アプリケーション開発機能内でASP.NET 3.5がチェックされていませんでした。 (画像を投稿するのに十分な評判がありません)。


2
@bicbmx画像の場合、たとえばimgur.comの
superjos

12

デフォルトでアプリケーション用に作成されたアプリケーションプールがバージョン2である可能性があります。そのため、リストに.svc拡張子のハンドラーが表示されても機能せず、静的ファイルとして扱います。必要なのは、アプリケーションプールのプロパティを開いてバージョン4に切り替えることだけです。


8

asp.netを再度登録すると、問題が解決します。
ここに画像の説明を入力してください

Visual Studioコマンドプロンプトに移動し、
asp.netをwindows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -iとして登録します。


2
aspnet_regiis.exe -iは、「このオプションは、このバージョンのオペレーティングシステムではサポートされていません。」で応答します。IISがお尻にこんなに苦労するのはなぜですか?
ポールマッカーシー

5

セットアップしているWindows 8マシンでも同じ問題が発生しました。.NET Framework 4.5をインストールするvs2010の前にvs2012をインストールしました。アプリプールを4.0で実行しています。aspnet_regiis -iを使用して、aspnetが4.0に登録されていることを確認しました。それでもまだうまくいきませんでした。次にWindowsの機能を開いたところ、4.5が「.NET Framework 4.5 Advanced Services」というセットを追加していることに気付きました。WCFサービスノードとその子を有効にすると、SVCエンドポイントが正しく動作しました。これがWindows 8への移行を推進している人々の役に立つことを願っています。


Server 2012、IIS8もここにあります。正しい方向に進むための指針に感謝します。興味のある方は、アプリケーションサーバーの役割とWebサーバーの役割を有効にする必要がありました。ここに必要な情報が見つかりました:msdn.microsoft.com/en-us/library/hh167503(v
John

3

同じ問題に遭遇したとき、私はこの質問に出くわしました。私の問題の根本的な原因は、正しく構成されていないアプリプールです。4.0に設定する必要があるときに、うっかり2.0に設定されました。次のリンクの回答は、この問題を明らかにするのに役立ちました:http : //forums.iis.net/t/1160143.aspx



2

同じエラーメッセージが表示される可能性がある別の解決策。

.NET 4.0 Webアプリケーションを新しいアプリケーションプールにセットアップしようとすると、この奇妙なエラーが発生し、静的ファイルハンドラーを使用してaspxファイルを処理しようとしていたので、意味がありませんでした。

何らかの理由で、.NET 4.0用のISAPIが、IISマネージャーのサーバーレベルのISAPIおよびCGI制限領域で無効に設定されていました。これを有効に設定するだけで十分でしたが、IIS 7.5マネージャーは非常に複雑で、追跡が難しいため、これを理解するのに長い時間がかかりました。

4.0エンジンで処理できない4.0アプリケーションだったので、静的ファイルハンドラーがデフォルトで使用されていたと思います。


2

これを読んでいる他の人のために:

これは、登録した.Netバージョンが、Webサイトに接続されているアプリケーションプールの[基本設定]で選択したバージョンでない場合に発生する可能性があります。たとえば、サイトのアプリケーションプールで.Net v2.0が選択されていますが、v4.0を登録しました


2

Windows 10 / Framework 4.7の場合、次の方法でHTTPアクティベーションをオンにする必要がありました。

  1. コントロールパネル>プログラムと機能> Windowsの機能をオンまたはオフにする
  2. .NET Framework 4.7 Advanced Servicesの下で、WCF Servicesを展開し、HTTP Activationを選択して、WCFを操作するときに必要なものをすべてチェックします。
  3. [OK]をクリックしてインストールを実行し、管理コマンドプロンプトを開いてIISRESETコマンドを発行します。


0

IISマネージャーを使用して、ASP.NET 4.5が以前にインストールされていたとしても、.aspxファイルが(「ハンドラーマッピング」の下で)ISAPI 2.0にマップされていることがわかりました。ISAPI 4.0 64ビットの実行可能ファイルを(また)指すように編集して、問題を修正しました。

実行ファイルは%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dllにありました


0

.net 2.0に割り当てられたクラシックアプリプールを備えたiis 7.5上のアプリケーションについてこのメッセージを受け取りました。ハンドラーマッピングに移動して、2つのスクリプトマップを追加する必要がありました。どちらも名前以外は同じです。1つの名前はsvc-ISAPI-2.0-64、もう1つの名前はsvc-ISAPI-2.0でした。リクエストパスは.svcでした。また、実行可能ファイルは%SystemRoot%\ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dllでした。私はiisを再起動し、すべてが幸せでした


0

私が今解決した最悪のシナリオの1つは、Web.configに競合するエントリがあることです。

ローカルマシンでは、.woff拡張子がIISに登録されていなかったため、Web.configを使用して追加しました。しかし、本番サーバーでは.woffにMIMEタイプが登録されていました。これにより、アプリケーションレベルの競合が発生しました。

面白いのは、これについてエラーが記録されていないことです。推測作業です(もちろん初回)。

したがって、私にとっての解決策は、web.configから要素を削除することです。


0

同じ問題が発生しました。Webサイトのターゲットフレームワークのバージョンを、それが開発されたバージョンに変更しました。IISでも同じです。これは私の問題を解決しました。お役に立てれば...

ありがとうございました


0

私の場合、アプリケーションプール->詳細設定-> 32ビットアプリケーションを有効にする(trueである必要があります)で、複数の理由が考えられます。以前はfalseに設定されていました。


-1

CMDまたはpowershellを使用して、好みの.NetおよびCPUアーキテクチャディレクトリに移動します。

次のコマンドを入力します。 aspnet_regiis –r


Windows Server 2008 R2では、「このオプションはWindows Vistaではサポートされていません。」
CSharper 2013

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