IIS 7.5上のASP.NET MVC


338

Visual Studio 2010 RCを使用してWindows 7 Ultimate(64ビット)を実行しています。最近、VSに付属の開発サーバーではなく、IISでアプリをVSで実行/デバッグすることにしました。

しかし、MVCアプリを実行しようとするたびに、次のエラーが発生します。

HTTPエラー403.14-禁止Webサーバーは、このディレクトリの内容を一覧表示しないように構成されています。詳細な

エラー情報

モジュールDirectoryListingModule

通知ExecuteRequestHandler

ハンドラStaticFileエラー

コード0x00000000が要求されました

URL http:// localhost:80 / mySite /

物理パスC:\ myProject \ mySite \

ログオン方法匿名ログオン

ユーザー匿名

default.aspxディレクトリにファイルを配置したところ、次のエラーが発生しました。

HTTPエラー500.21-内部サーバーエラーハンドラー "PageHandlerFactory-Integrated"のモジュールリストに不正なモジュール "ManagedPipelineHandler"があります

これを機能させるために実行するのを忘れた他の手順はありますか?

注:VS 2010 RCのインストール後にIIS 7.5をインストールしました。Visual Studio 2010のMVCプロジェクトの[プロパティ]にある[Web]タブの下にある組み込みの[仮想ディレクトリの作成]ボタンを使用しました。アプリケーションがASP.NET 4アプリケーションプールを使用していることを確認しました。

以下に、インストールされているIISの機能を示します。

代替テキスト


わかりました。同様の問題があり、ASP.NET MVC 3 Webサイトでのみ表示されます。ASP.NET MVC 2 Webサイトは正常に動作します。Default.aspxファイルをWebサイトのルートに配置したところ、問題なくピックアップされました。VS2010 SP1を使用してASP.NET MVC 3 Webサイトをビン展開しましたが、それでもまだ喜びはありません。私はこれで私の知恵が尽きました。
Umar Farooq Khawaja 2011年

5
私はこれと同じ問題を抱えています。統合4.0を使用するようにアプリケーションを設定し、登録コマンドを実行して.NETをIIS(7.5)に登録しましたが、それでもこのエラーが発生します。
コリンホワイト

2
ようやくセットアップで問題を見つけることができました。つまり、ファイル名_Layout.cshtmlをに_PageLayout.cshtml変更し、それに対応する変更_ViewStart.cshtmlを加えましたが、明らかにそれだけでは不十分でした。名前をに戻すと_Layout.cshtml、機能し始めました。混乱していたのは、_PageLayout.cshtmlWin7 32ビットでは正しく検出されたが、Win7 64ビットまたはWinSvr2K8 R2では検出されなかったことです。
Umar Farooq Khawaja 2011年

3
IIS 8を搭載したWindows 8でこれに対する解決策を見つけた人はいますか?
エリックZビアード2012年

3
[:あなたは、Windows Server 2012のまたは窓8にしている場合は、この参照stackoverflow.com/questions/12134713/... :[1] stackoverflow.com/questions/12134713/...
Lomak

回答:


499

ASP.NET 4はIISに登録されていません。コマンドライン/実行で次のコマンドを実行する必要がありました

32ビット(x86)Windows

%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

64ビット(x64)Windows

%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir

デビッド・マードックのコメントからのメモ:

この回答が投稿されてから.netバージョンが変更されたこと。%windir%\ Microsoft.NET \ Framework64ディレクトリにあるフレームワークのバージョンを確認し、それに応じてコマンドを変更してから実行してください(現在はv4.0.30319です)。


9
64ビットWindowsのFramework64の「64」に注意してください。* ssで私を噛んだ。32ビットバージョンを4〜5回インストールしたが、何の効果もなかった。
Ben Lesh

14
この回答が投稿されてから.netバージョンが変更されたこと。フレームワークのどのバージョンが%windir%\Microsoft.NET\Framework64ディレクトリにあるかを確認し、実行前にコマンドを適宜変更してください(現在はv4.0.30319です)。
デビッドマードック

1
@bleshに追加するには、64ビットで32ビットのaspnet_regiis.exeを実行すると、オプションが再表示されて何も行われない場合があります
xster

3
Aspnet_regiis.exeにコマンドは、.NET Frameworkフォルダから欠落している場合は、完全な.NET Frameworkのインストーラのダウンロードmicrosoft.com/download/en/...を
warrickh

11
これはIIS8では機能しません。「このオプションはこのバージョンのオペレーティングシステムではサポートされていません。管理者は代わりにIIS8でASP.NET 4.5をインストール/アンインストールし、「Windowsの機能をオン/オフにする」を使用してください。ダイアログ、サーバーマネージャー管理ツール、またはdism.exeコマンドラインツール詳細については、go.microsoft.com / fwlink /?LinkID = 216771を参照してください。
Mastro 14

199

あなたが持っていることを確認するためのもう1つのことは、web.configで次のセットです:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

23
それは私のためにそれをしました。ありがとう
boca

5
私も解決しました。奇妙なことに、その設定なしでVS2010 IIS Expressでローカルに動作します。
Phil

8
runAllManagedModulesForAllRequests(静的ファイルでも実行される)設定したくない場合は、Microsoftホットフィックス(microsoft.com/download/en/…)をインストールできます 。
Justin Helgerson、2012

10
ルーティングモジュールを追加して、これを回避してみてください:britishdeveloper.co.uk/2010/06/…–
Chris Herring

VS2013を使用していてIIS 7.5で実行しようとしている場合-これを追加する必要があります
KenL

77

web.configに次のセットがあることを確認してください。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

より良いソリューション:

上記のソリューションは完全に正常機能しますが、すべてのリクエストで(.jpg .gif .css .html .pdfなどのすべてのリクエストでも)登録されたすべてのHTTPモジュールを実行するため、他の問題を引き起こす可能性があり、明らかにリソースの無駄になります。代わりに

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0"/>
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>

preCondition属性が空であることを確認してください。これは、すべてのリクエストで実行されることを意味します。[もっと読む](http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html、 "Read original post")


6
これにより、ルートの403.14、およびMVCアプリの他のコントローラーメソッドの404が修正されました。ただし、同じサーバー上で同じ表示サイト設定を持つ別のアプリを実行していて、この設定なしで動作するため、ここでもまだ怪しいものがあります。これは、VS 2012の好意によりSPAプロジェクトテンプレートによって作成されたweb.configであり、私のボックスでは問題なく機能しますが、公開されたときは機能しません。
シャノン2013年

4
はい、私の現像装置が含まれているので<system.web><httpModules><add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />、中にWindows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config、私のVS 2012のインストールの日付に変更されているように見えました。それで、次の質問は、それを機能させる私の他のプロジェクトには何がありますか?
シャノン2013年

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir開発デバイスに存在しなければならないデフォルトを設定するトップソリューションでは明らかに推奨されないことに注意してください。UrlRoutingModule参照を削除すると、このコマンドでは問題が解決しません。
シャノン2013年

Windows Server 2008 R2 IIS 7 for ASP.NET MVC 5で動作します。ありがとうございます。
Ervi B 2016

42

このエラーが発生するもう1つの理由は、ファイルGlobal.asaxがルートフォルダに存在しない場合です。


4
うん-私が書いたインストーラはこのファイルを渡さなかった。ありがとう!
ザダム

4
これも私の問題でした。アプリケーションがGlobal.asaxを欠いているという403症状に基づいて推測したことはありませんでした
Saul Dolgin 2013年

3
また、これを修正しました:パブリッシュオプションでプリコンパイルをオフにしました(global.asax影響を受けるのはファイルのみです)。
Richard

1
これは私にとってトリックでした。問題は、私にとって、そして他の多くの人にとって、global.asaxは、発行するたびに生成されるということです。誰かが毎回それを生成する方法を見つけましたか?
Greg Z.

ありがとう、私の問題を修正しました。アプリケーションはASP.NET MVC 4.0、Framework 4.0で実行されます。Arvixeでホストされています。
ジョーキング

20

私もこのエラーを受け取り、Windows Serverで「HTTPリダイレクト」がオンになっていないことを発見しました。このブログ投稿は、これも指摘しています:http : //blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx


6
それがあり得たすべてのいまいましいことの中で、これはそれです。私はどこを見ても、セキュリティ設定を数時間、aspnet_regiisなどで何度も遊んでいました。もろいカイザーロールの甘い赤ちゃんイエス。
Andrew Backer

私はこれに丸一日費やしました。どうもありがとうございます。
Pradeep、2012

Windows 8の場合、HTTPリダイレクトを有効にした後もエラーが発生します。第二段階として、これをしなければならなかった:インターネットインフォメーションサービスの下でASP.NET 4.5役割を追加します- >のWorld Wide Webサービス- >アプリケーション開発機能serverfault.com/questions/514091/...
dreamerkumar

2番目のストップで私の問題は解決しました。一部のマシンはそれなしで動作しますが、他のマシンはこれが不可欠です。ありがとう。
Alexis Heijmeijer、2017年

15

甘いイエス。上記のすべてを試しました(ただし、設定は同じでした)。問題がある場合は、まだ別の解決策:

http://support.microsoft.com/kb/980368

システムにこのKBをインストールしてみてください。404が表示されている場合は、この更新がないためである可能性があります-isapiモジュールが見つからず、これなしにできることは多くありません!


1
Server 2008 SP2(R2ではない)を実行している32ビットサーバーで解決しました
Simon C


7

Asp.Net MVC 5アプリを含むAzure Server 2012 R2 IIS 8.5 VM(binはMVC 5をデプロイ)で私は、4.5が既にインストールされている場合でも、管理者特権のcmdプロンプトから以下を実行する必要がありました。

dism /online /enable-feature /featurename:IIS-ASPNET45

出典:http : //support.microsoft.com/kb/2736284

また、次のPowerShellを使用して、すべてのIIS機能を総当たりでインストールしました。

import-module servermanager
add-windowsfeature web-server -includeallsubfeature

ソース:http : //www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2

これで私のアプリは動作しています。


「dism」の1つは私のために機能しました(他の提案された変更を適用せずに)。「/ all」スイッチを最後に切り替えて、すべての「親」機能もインストールされていることを確認する必要がありました。
Jeroen Ritmeijer 2016年

これでうまくいきました。Windows Server 2012で.NET 4.5を使用してMVC 5を実行します。デフォルトでは、IISは.NET 4.5をインストールしません。
DPac

6

MVCアプリケーションを新しいサーバーに移動しました。.NET 4とMVC 3がインストールされましたが、「エラー403.14」が引き続き発生しました。この場合、これはIISがMVCアプリケーションを処理していることを理解せず、デフォルトページを探していたことを意味します。

解決策はシンプルでした:HTTPリダイレクトがサーバーにインストールされていません。

サーバーマネージャー–役割– Webサーバー(IIS)–役割サービス– HTTPリダイレクト:インストールされていません。インストールして問題を解決しました。


1
サーバーマネージャーとは どこにありますか?
Elad Katz、2015

サーバーマネージャーは管理ツールにあります
udog

5

また、アプリがプリコンパイルされている場合は、

PrecompiledApp.config

アプリのルートフォルダーにありますHTTP Error 403.14


アプリがプリコンパイルされていませんが、なんらかの理由でファイルがありました。ファイルを削除し、それは今動作します。ありがとうございました!
vaindil 2016

私は2時間を過ごし、自分でそれを解決する前にこの答えを見た場合、私は...本当に幸せになる
sotn

4

別の解決策として、global.asaxを移動する場合は、マークアップが正しいMvcApplicationクラスを指していることを確認してください。うまくいけば、これは将来誰かを救うでしょう。


4

WebDeploy IIS拡張機能を使用してWebサイトをIIS6からIIS7.5にインポートしたので、すべてのIIS設定は本番環境とまったく同じでした。ここで提供されているすべてのソリューションを試した後、どれもうまくいかなかったので、Webサイトのアプリケーションプールの設定をクラシックから統合に変更するだけで済みました。


4

同じ404.14の問題に突然遭遇しました。最後に、発行プロファイル設定で「発行中のプリコンパイル」のチェックを外すことで問題が修正されました。


こっちも一緒。今日まで出版は問題ありませんでした-チェックを外すことで解決しました。とにかく奇妙です
ルフォ卿

4

私はデフォルトのルートをある時点で変更しました:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

に:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index" }

エラーが発生しました。私がおそらくこれを永遠に続けていたので、誰かがルーティングについて話してくれてうれしいです。


4

私の場合、ASP.NET 4.5がサーバーにインストールされていないため、ASP.NET 4.5をインストールすると問題が解決しました。


4

このエラーを解決するには、cmdをadminとして実行します。 ここに画像の説明を入力してください

Windows 32ビットの画像と同じようにします

フレームワークだけではなく、framework64として64ビットで変更を加えるだけで、iisに移動してサイトを更新するより
もエラーが発生する場合は、アプリケーションプールで変更を行ってください。


3

この問題につながる別の問題がありました。

  • アプリプールが.net 4を統合モードで実行していることを確認しました
  • aspnet_regiis.exe -iを実行しました
  • アプリプールを実行しているアカウントのフォルダー権限が正しく設定されていることを確認しました

これらはどれも機能しませんでした。system.webserver>モジュールの下の私のweb.configには、次のものが含まれていることがわかりました。

<remove name="WindowsAuthentication" />

明らかに、これによりWindows認証モジュールが削除されました。

これが誰かに役立つことを願っています。これが私にほとんどの夜を費やすからです!


3

新しいバージョンのWindows Serverでは、UIが少し異なります。IISでASP.Netを機能させるには、ここでASP.Netを有効にする必要があります。

IISとAsp.netを修正する


2

この問題に別のソリューションを追加します。

私のGlobal.asax.csファイルで、次のようにして、試みられたphpファイルがMVCパイプラインによって消費されるのを無効にしました。

routes.IgnoreRoute( "{*php}" );

私は以前にMVC2プロジェクトでこれらを実行しましたが、問題なく動作しましたが、MVC 3アプリでこれを実行すると、上記の問題が発生しました。


2

これが発生する可能性のあるもう1つの理由- RouteConfig.csまたはWebApiConfig.csが無効です。

私の場合、そのように定義されたルートがありました(中括弧の代わりに括弧に注意してください):

...
routeTemplate: "api/(something}"
...

わたしにはできる!私が変わっroutes.MapRoute( name:"Default", url:"{controller}/{action}/{repositoryId}", defaults:new { controller = "Account", action = "Login", id = UrlParameter.Optional } );た場合。修正id = UrlParameter.OptionalするrepositoryId = UrlParameter.Optionalと動作し始めます!
ドミトレスキー2014年

2

Windows 8ユーザーの場合、Windowsコンポーネントを追加/削除し、.net再起動のバージョンを削除してから、IISに登録するために再インストールする必要があることに注意してください。Visual Studioから.net 4.5を入手し、その後IISをインストールすると、これが起こると思います。


2

奇妙に思われるかもしれませんが、IISの再インストールは私にとってはうまくいきました。次のコマンドを.netバージョンフォルダー内から実行しました。

aspnet_regiis.exe /i

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

このコマンドを初めて実行したとき、HTTPエラー403.14が発生し始めました。しかし、コマンドをもう一度実行すると、問題は解決しました。

Obs:IISを再インストールする前に、サーバー管理画面のサーバー機能からHTTPリダイレクトを削除することも行いました。これも問題の解決に影響を与えたのかもしれませんが、よくわかりません。したがって、IISの再インストールがそれでも機能しない場合は、HTTPリダイレクトを削除して、もう一度試してください。うまくいけば、それもあなたのために働くかもしれません。


FYI aspnet_regiis.exeIISをインストールまたは再インストールしていない、それはちょうどそれがアプリケーションをホストするためにIISで使用できるように、特定の.NETフレームワークのバージョンを登録します。
スティーブン

1

32ビットモードに頼ることなくこの問題を解決するには、このプロジェクトのソースコードを更新する必要があります

public static void RegisterUrlRoutesFromAttributes(RouteCollection routes)
{
    // Enumerate assembly for UrlRoute attributes.
    List<MapRouteParams> routeParams = new List<MapRouteParams>();
    AppDomain.CurrentDomain.GetAssemblies()
        .ToList()
        .ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly)));

この問題は、ITクラウドコードプレックスプロジェクトのディスカッションボードでのディスカッションとして提起しました。

http://itcloud.codeplex.com/discussions/262000


1

これは私にとってはうまくいき、別の人にとっては役に立つかもしれません。

必要なすべてのコンポーネントが存在しないか、すべてが正しく登録されていない可能性があります。これを解決するには、コントロールパネル内のすべてのオプションのチェックを外してみてください-> Windowsの機能をオンまたはオフにしてください->インターネットインフォメーションサービス-> World Wide Webサービス->アプリケーション開発機能。問題が解決したかどうかを確認します。

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


1

Windows 8またはServer 2012でIIS 8.5を実行している場合、mvc 4/5(.net 4.5)の実行が仮想ディレクトリで機能しないことがあります。ホストファイルにローカルホストエントリを作成してローカルマシンをポイントし、新しいローカルIIS Webサイトをそのフォルダーに(一致するホストヘッダーエントリと共に)参照すると、それが機能することがわかります。


0

コントローラへのルートと同じ名前空間(つまりフォルダ)を作成しました(例:MvcApp/Test/SomeClasses.csおよびMvcApp/Controllers/TestController.cs)。これも403.14になりました!


0

私にとっての解決策は、NuGetパッケージMicrosoft.AspNet.WebPages(およびRazorとインフラストラクチャの依存関係)をWebプロジェクトに追加することでした。

インフラストラクチャは、最初は参照として追加されなかったため、強制的に再インストールする必要がありました。


0

私の場合、アプリケーションプールの.NET CRLバージョンprppertiresは[マネージコードなし]に設定されていました(理由は不明)。.NET CRLバージョンv4.0.30319に設定すると、問題が解決しました。

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