ASP MVC Webプロジェクトを開発しています。これで、開発中のIIS7に展開することを強制する要件があります(いくつかの機能を確認するため)。 WebサイトのURLを入力しようとすると、上記のエラーメッセージが表示されます。 (注:開発マシン:Vista Home Premium、IIS7)
私が今までやったこと:
HOSTSファイル(C:\ WINDOWS\system32\drivers\etc\hosts)を編集しました。
2つのドメインを配置します(127.0.0.1 domain1.comおよび127.0.0.1 domain2.com)。
フォルダーc:\ websites\dirOfApplicationを作成し、Visual Studio 8内からこのフォルダーに展開しました。
IIS7では、ホスト名domain1.comおよび上記のアプリケーションフォルダーを使用して新しいサイトを作成しました。
Webブラウザでアドレスdomain1.comを入力すると、上記のエラーが発生します(HTTPエラー403.14-禁止-Webサーバーは、このディレクトリのコンテンツを一覧表示しないように構成されています。)
私は何かが欠けていると思うが、何がわからない!ファイルSystem.Web.Mvc、System.Web.AbstractionおよびSystem.Web.Routingを同じ結果で展開しようとしました。 F5を押してアプリケーションを実行しようとすると、常に正常に動作します!
たぶんそれは誰かに役立つでしょう:.NET framework 4.5を使用してアプリをMVC 4に変換し、IIS 7.0を使用してサーバーにフレームワークをインストールした後、質問で言及された同じ「禁止」エラーが発生しました。上記のすべてのオプションを試してみましたが、
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
私のweb.configから欠落していました。これを追加すると、すべてが機能しました。シンプルだが見落としやすい...
編集:
もちろん、上記のソリューションは機能しますが、実際にはリソースの無駄です。コメントの Chris Herring で指摘されているように、ルーティングモジュールを追加する方が良いと思います。
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
SOで回答済み ここ 、質問: 403-iis7.5での基本的なMVC 3デプロイでは禁止
aspnet_regiis -i
を実行します。多くの場合、4.0アプリを機能させるには、それを行う必要があることがわかりました。 Administrator
としてコマンドプロンプトを開きます(コマンドプロンプトアイコンを右クリックし、[管理者として実行]を選択します)。
cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i
インストールして登録したら、アプリケーションが.NET 4.0に設定されたアプリケーションプールを使用していることを確認します。
更新:このコマンドの問題を発見しました。 -iを使用すると、すべてのアプリケーションプールがASP.NET 4.0に更新されました。
aspnet_regiis -ir
を使用すると、ASP.NETのバージョンがインストールされますが、Webアプリケーションはこのバージョンに変更されません。 -iruオプションを確認することもできます。
私もこのエラーに遭遇しました。すべての構成とアクセス許可が正しかった。しかし、Global.asaxをサーバーにコピーするのを忘れていたため、403エラーが発生しました。
それは、あなた(私)が何をしているのかについてあまりにも確信しているからです!
私のマシンにはIIS 7がインストールされていますが、必要なASP.NETコンポーネント(コントロールパネル->プログラム->オン/オフの切り替え-> ASP.NET)はインストールされていません。
これをインストールすると問題が解決しました
同じ問題がありました。このマイクロソフトのサポート記事で修正されました。
https://support.Microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url -routing-might-return-http-404-errors-when-they-attempt-to-process-extensionless-urls-on-iis-7-and-iis-7.5
Windowsコントロールパネルの[プログラムと機能]アプリケーションの[Windowsの機能の有効化または無効化]ダイアログボックスで、次の手順を実行します。
-または-
HTTPエラーリダイレクトモジュールまたは静的コンテンツ圧縮モジュールのいずれかを再度有効にすると、ASP.NETとIISがHTTPパイプラインイベントを正しく同期します。これにより、URLルーティングモジュールは、拡張子のないURLを処理できます。
私の場合、次のアプローチが助けになりました:
aspnet_regiis -i
in Windows\Microsoft.Net\Framework
System.webServerへのモジュールの追加
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
...
</system.webServer>
X64を実行している場合は、アプリプール設定で32ビットアプリケーションが有効になっていることも確認してください
「公開中のプリコンパイル」のチェックを外す-VS2015で作成したばかりのWebサービスで403.14エラーが発生していたため、VS2013で書き直して同じ結果になりましたエラー。どちらの場合も、「公開中にプリコンパイル」をオンにしました。チェックを外しましたが、まだエラーが発生していました。私の場合、「公開前にすべての既存ファイルを削除する」もありましたが、サーバー上のターゲットディレクトリからすべてを削除せずに、そこに新しい公開ファイルをコピーしました。そうしないと、「PrecompiledApp.config」ファイルが残され、問題が発生します。そのファイルを削除すると、VS2013とVS2015の両方のバージョンのWebサービスでゴールデンになりました。
ここですべてを試しました。何も機能しませんでした。問題は私のWeb.config
ファイルにあり、依存するアセンブリバインディングが最小の1
から最小の0
に変更されました。
<!-- was -->
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
<!-- should have been -->
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
「HTTPエラー403.14 –禁止Webサーバーはこのディレクトリのコンテンツを一覧表示しないように構成されています」の修正方法
このエラーは、IIS 7+でホストされているMVC 2+を実行している場合に発生します。これは、ASP.NET 4がIISに登録されていないためです。私の場合、MVC 3プロジェクトを作成し、IIS 7.5でホストしていました。
修正するには、MVC 2以降と.Net Framework 4.0がインストールされていることを確認してから、管理者としてコマンドプロンプトを実行し、次の行を入力します。
32ビット(x86)
%windir%\ Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir
64ビット(x64)
%windir%\ Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
上位の回答が機能しない場合は、ホスティングディレクトリでPrecompiledApp.config
という名前の設定を探し、存在する場合は削除します。このファイルにより、IISExpressおよびLocalIISが正常に機能しなくなります。 (そしてそれはバグだと思う)私の場合のファイルの内容は次のとおりでした:
<precompiledApp version="2" updatable="true"/>
そして、私は2時間ですべてを試し、この構成で何度もテストしたので、私の場合の問題であった100%肯定的です。
もう1つ:新しいバージョンのWindowsではaspnet_regiis
およびIISを使用できないため、試してください
dism /online /enable-feature /featurename:IIS-ASPNET45 /all
間違ったManaged pipeline mode
がこのエラーの原因になる場合があることに注意してください。 integrated
とclassic
を選択するには、2つの選択肢があります。
また、もう一つのことが可能です
.net framework 4.0を手動でインストールする
このソリューションは、ウィンドウ7のIIS7用です。
管理特権でcmdを開く
ディレクトリ「C:\ Windows\Microsoft.NET\Framework\v4.0.30319」に移動します
タイプaspnet_regiis.exe -i
実行コマンド「inetmgr」を入力して、inetマネージャーに到達しました
iIS7を更新します
サイトをリロードします。
また、次の理由で提供されているすべてのソリューションにもかかわらず、この同じエラーが発生しました。
これは古いトピックであることは知っていますが、コントローラーのルートと同じ名前のフォルダーがある場合は、このエラーが発生することもあります(デバッグ中)。
たとえば、/ UserというルートのUserControllerがあり、ソリューションに「User」というフォルダーがある場合、IISExpressはビューを表示する代わりにフォルダーを参照しようとします。
Global.asaxファイルを確認してください。私の場合、それは空でした。
ここで提案されたすべての解決策を試した後、私はさらに別の可能な解決策を見つけました: RLScan
IISは、アプリケーションのweb.configでもWebDAVが無効になっており、WebDAVのハンドラーとモジュールは削除されました。 PUTは引き続き403-Forbiddenを返し、IISログにログエントリがありませんでした。 (GET/POSTは正常に機能しました)。
IISには、すべてのPUTを妨げるアクティブなISAPIフィルター(URLScan)が有効になっていたことが判明しました。 URLScanを削除した後、それは私のために働いた。
C#4.5のASP.NETプロジェクトでは、Web Platform InstallerでinstallingASP.NET extensionによってそのような問題を解決しました。
最近このエラーが発生し、Windowsサーバーで「HTTPリダイレクト」機能が有効になっていないことが原因であることがわかりました。このブログ投稿は、(古いWindows Serverバージョンであるにもかかわらず)トラブルシューティングを介して答えを見つけるのに役立ちました: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web -routing-routetable-not-working-with-iis.aspx 新しいサーバーの場合は[コンピューターの管理]に移動し、[Webサーバーの役割]まで下にスクロールして[add role services
]をクリックします
この問題はありましたが、インターネットインフォメーションサービス(IIS)マネージャーに移動し、[ディレクトリの参照]をダブルクリックして[有効にする]をクリックすることで簡単に修正されました。
私の場合、ファイルに直接アクセスできましたが、フォルダーにはアクセスできませんでした。
私はあなたが内部ホストでこの問題を抱えていたことを知っていますが、以前は外部ホストでそのような問題を経験していましたが、私の場合はそれが独自の解決策を持っていたので、誰かの時間を節約できるかもしれません:
実際、私のウェブサイトは何らかの理由で停止しましたが、現在私は気付いていませんが、同じ問題があるかどうかを確認するには、WebsitePanelのメインページでWeb-> Websitesに移動し、リストからウェブサイトのドメイン名を選択します、開いたページの右側で、Word STARTEDが表示されるかどうかを確認します。それ以外の場合は、Word STOPPEDが表示される場合は、もう一度開始します。それで全部です。
私は使用しています:Win Server 2012 R2/IIS 8.5/MVC4/.Net 4.5
上記のいずれも機能しない場合は、これを試してください:
「公開中のプリコンパイル」のチェックを外す
これは数日間私の尻を蹴った。
ここにさらに別の回答を追加します。 IIS 10.0を実行しているWindows 2016 Serverの場合、IISが正しくインストールされていない可能性があります。あなたがここにいることに気づいたら、私が提案することをここに示します。
Visual Studioで、アプリの開発に使用した.NETフレームワークのバージョンを確認します。プロジェクト、プロパティページ、アプリケーションタブを右クリックします。ターゲットフレームワーク。私の場合、4.6.1でした。
Webサーバーで、Googleの「.net framework 4.6.1をダウンロード」し、MSダウンロードページに移動します。このページで、ブラウザーのユーザーエージェントが必要とするバージョンを適切に判断する必要があります。私の場合、それはX64でした。
インストーラーを実行します。既に存在していると思われる場合でも安全です。 「インストール済み」の場合は「インストール済み」と表示されます。
注:ここで、Windows機能として適切に「有効化」されていることを確認する必要があります。また、ASP.NET IISコンポーネントが適切にインストールされ、有効になっていることも確認する必要があります。
再びWebサーバーで、サーバーマネージャーに移動し、役割と機能を追加してから、役割ベースまたは機能ベースを選択します。次へをクリックします。
[宛先サーバー]タブでローカルサーバーが選択されていることを確認し、[次へ]をクリックします。
[サーバーの役割]タブで、[WebサーバーIIS]および[アプリケーション開発]を展開します。サーバー側のインクルードとWebsocketプロトコル以外はすべて必要です。
管理ツールで、必要な特定のレガシー機能のために、すべて(IIS 6 MMCを含む)を有効にすることを選択しましたが、それは別の投稿です。
私の場合、再起動は必要ありませんでした。これが誰かを助けることを願っています。
IPアドレスを1桁間違えて入力したため、他のサーバーの1つに移動していました。 .NETエラーページが間違ったマシンから表示されるため、非常に混乱します。
私の場合、web.configおよび/ binフォルダー以外のすべてのファイルが欠落していました(どうにかコピーされません)。
愚かですが、それが最後に確認したものです。
Identity Impersonateを使用しています:
<system.web>
<identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>
サーバーにプッシュアップするとき、ユーザー名にTemporary ASP.NET
Filesフォルダーへのアクセス権を与えて、適切に読み取り/書き込み/実行できるようにする必要があります。
C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files
明らかに、「frameworkversion」と「aspversion」を使用しているバージョンに置き換えてください。