IIS 7のASP MVCの結果:HTTPエラー403.14-禁止


146

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キーを押してアプリケーションを実行しようとすると、正常に動作します。


回答:


224

多分それは誰かにとって有用です:.NETフレームワーク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>

2
NuGetパッケージをアンインストールするとrunAllManagedModulesForAllRequests="true"、Web.configからが削除されたことがわかりました。私が一晩かけてこれを理解しようとする前にこれについて言及していただきありがとうございます。
Schmalls 2012

3
この!!私はあなたの答えが見つかるまで、これを機能させるために丸一日費やすか、無駄にしてしまいました。ありがとうございます。奇妙なのは、ローカルマシンのIISで問題なく動作するが、本番環境では動作せず、どちらもIIS7.5を実行していることです
Glenn Slaven

1
それだけでした。Cassette Nugetのアンインストールで削除される場合があります。ありがとう。
ザカリースコット

8
ルーティングモジュールを追加することで、この設定を使用して回避しよう- britishdeveloper.co.uk/2010/06/...
クリス・ヘリング

6
私は、「たぶん誰かに役立つかもしれない」という回答のコメントが大好きです...笑...私も含めて、それは多くの人に役立つようです。
ポール、

126

ここで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オプションを確認することもできます。


私も働いた。aspnet_regiis -iコマンドを実行した後、UrlMappingModuleがIISにインストールされました。
Manish Gupta、

IISをインストールした後、.NET 4がすでに登録されているように見えても、すべてを機能させるにはaspnet_regiisを実行する必要がありました。
ブライアン、

フレームワークがIISの前にインストールされていた場合、はい、aspnet_regiisを実行する必要があります。
Brettski、2015年

2
64ビットシステムの場合は「Framework64」であることを忘れないでください。すなわち、Windows \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd

この用途では、aspnet_regiisの64ビットまたは32ビットバージョンは重要ではありません。いくつかの特別なケースを以下に示します:msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski

34

私もこのエラーに遭遇しました。すべての構成と権限が正しかった。しかし、Global.asaxをサーバーにコピーするのを忘れたため、403エラーが発生しました。


私の場合、気づかずに誤ってマウスで動かしてしまいました。ありがとう!
Mathias Lykkegaard Lorenzen 2013

Webドキュメントフォルダーを一掃した後、このファイルのコピーを見落としていたため、2時間も無駄になりました。
Steven Sproat

10

それはあなた(私)が何をしているかについてあまりにも確信があるためです!

私のマシンにはIIS 7がインストールされていますが、必要なASP.NETコンポーネント(コントロールパネル->プログラム->オン/オフ-> ASP.NET)がインストールされていません。

これをインストールすると問題が解決しました


9

同じ問題がありました。このマイクロソフトのサポート記事で修正されました。
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の機能の有効化または無効化]ダイアログボックスで、次の手順を実行します。

  1. 次のノードに移動します。インターネットインフォメーションサービス-> World Wide Webサービス->一般的なHTTP機能
  2. 「HTTPエラーリダイレクト」オプションが選択されていることを確認します。

-または-

  1. 次のノードに移動します。インターネットインフォメーションサービス-> World Wide Webサービス->パフォーマンス機能
  2. 「静的コンテンツ圧縮」オプションが選択されていることを確認してください。どちらかのオプションを選択したら、[OK]をクリックして変更を保存します。

HTTPエラーリダイレクトモジュールまたは静的コンテンツ圧縮モジュールのいずれかを再度有効にすると、ASP.NETとIISがHTTPパイプラインイベントを正しく同期できるようになります。これにより、URLルーティングモジュールが拡張機能のないURLを処理できるようになります。


7

以下に示す次の設定を適用してみてください。

1)に必要な権限をIIS_IUSRSユーザーに付与しますIIS Server(Webサイトを右クリックして、[権限の編集]> [セキュリティ])。

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

2)あなたが使用している場合は.NET Framework 4、.NET Frameworkのバージョンがあることを確認してくださいv4.0Application Poolあなたのウェブサイトの使用していること。

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

3)コマンドプロンプトを開きadministratoriisresetコマンドを実行して再起動しますIIS Serverます。

お役に立てれば...


ヒント:この後も権限エラーが発生する場合は、IISでサイトを実行するために、この後、管理者としてcmdでiisresetを実行する必要があります。
Cory Koch

6

私の場合、次のアプローチが私を助けました:

  1. aspnet_regiis -iWindows\Microsoft.Net\Framework

  2. system.webServerへのモジュールの追加

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

フレームワークを省略したと思います。ただし、cmdを管理者として開き、Windows \ Microsoft.Net \ Framework \ v4.0.30319でaspnet_regiis -iを実行します
DeadlyChambers '26


3

上の「公開時にはプリコンパイル」のチェックを外して -私はなっていた403.14私はVS2013でそれを書き直したので、私はVS2015で書かれたWebサービスでエラーをし、同じエラーを取得しました。どちらの場合も、「発行中のプリコンパイル」をオンにしました。チェックを外しましたが、まだエラーが発生していました。私の場合、「発行する前にすべての既存のファイルを削除する」こともありましたが、新しい発行済みファイルをそこにコピーする前に、サーバー上のターゲットディレクトリからすべてを削除していませんでした。そうしないと、「PrecompiledApp.config」ファイルが残り、問題が発生します。そのファイルを削除すると、WebサービスのVS2013バージョンとVS2015バージョンの両方でゴールデンになりました。


2

私はここですべてを試しました。何もうまくいきませんでした。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" />

1

時々間違っているManaged pipeline modeとこのエラーが発生することに注意してください。そこを選択するには、2つの選択肢があるintegratedclassic


1

「HTTPエラー403.14 –禁止Webサーバーはこのディレクトリの内容をリストしないように構成されています」を修正する方法

このエラーは、ASP.NET 4がIISに登録されていないため、MVC 2+がIIS 7以降でホストされている場合に発生します。私の場合、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



1

上位の回答が機能しない場合はPrecompiledApp.config、ホスティングディレクトリで指定された設定を探し、存在する場合は削除します。このファイルは、IISExpressとLocalIISが正しく動作するのを妨げます。(そしてそれはバグだと思います)私の場合のファイルの内容は次のとおりでした:

<precompiledApp version="2" updatable="true"/>

そして、私は2時間ですべてを試し、この設定で何度もテストしたので、私のケースの問題であった100%肯定的です。

もう1つ:aspnet_regiisWindowsとIISの新しいバージョンでは使用できないので、試してください

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


0

次の理由により提供されたすべての解決策にもかかわらず、私はこの同じエラーにも遭遇しました:

  • DLLがありません
  • データベース接続文字列がアクセスできないサーバーを指しています。

0

私の場合、web.configと/ binフォルダーを除くすべてのファイルがありません(どういうわけかコピーされていません)。
ばかげているが、それは私がチェックした最後のものでした。


0

最近このエラーが発生し、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


0

C#4.5のASP.NETプロジェクトで、ASP.NET拡張機能をWebプラットフォームインストーラーにインストールすることで このような問題を解決しました


0

また、もう1つ可能性があります

.NET Framework 4.0を手動でインストールする

このソリューションは、ウィンドウ7のIIS7用です

管理者権限を持つcmdを開く

ディレクトリ「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319」に移動します

タイプaspnet_regiis.exe -i

実行コマンド「inetmgr」を入力して、inetマネージャーに到達しました

IIS7を更新する

サイトをリロードします。


0

私はあなたが内部ホストでこの問題を抱えていたのを知っていますが、外部ホストで以前にそのような問題を経験していました。

実際、私のウェブサイトは現在気付いていない何らかの理由で停止しました。同じ問題があるかどうかを確認するには、WebsitePanelのメインページで[Web]-> [ウェブサイト]に移動し、リストからウェブサイトのドメイン名を選択します。 、その後、開いたばかりのページの右側で、STARTEDという単語が表示されているかどうかを確認します。そうでない場合は、STOPPEDという単語が表示されている場合は、もう一度開始します。それで全部です。


0

これは古いトピックであることはわかっていますが、コントローラーのルートと同じ名前のフォルダーがある場合(デバッグ時に)このエラーが発生することもあります。

たとえば、/ Userというルートを持つUserControllerがあり、ソリューションに "User"というフォルダーもある場合、IISExpressはビューを表示する代わりにフォルダーを参照しようとします。


0

ここで提案されたすべてのソリューションを試した後、私はさらに別の可能なソリューションを見つけました:URLScan

IISのWebDAVは無効になっています。アプリケーションのweb.configでも、WebDAVのハンドラーとモジュールは削除されています。PUTは引き続き403-Forbiddenを返しましたをが、IISログにログエントリがありません。(GET / POSTは正常に動作しました)。

IISでアクティブなISAPIフィルター(URLScan)が有効になっていて、すべてのPUTができないことがわかりました。URLScanを削除した後、それは私のために働いた。


0

私の状況はこれらの状況とはまったく異なり、403:Forbiddenエラーメッセージは少し赤いニシンでした。

Global.asaxモジュールのApplication_Start()関数がweb.configにアクセスしようとして、それが参照しているエントリがそこにない場合、IISはチョークし、(何らかの理由で)403:Forbiddenエラーメッセージをスローします。

Global.asaxモジュールでアクセスしようとしているweb.configファイルのエントリが欠落していないことを再確認してください。


0

あなたが私のようなもので、NHibernateを使用するアプリケーションを持っている場合、上記の回答で問題が解決しませんでした。

アプリケーションの接続文字列を確認する必要があります。おそらくそれが正しいことを確認するためにwebconfigファイルにあります。


-1

Identity Impersonateを使用しています。

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

サーバーにプッシュアップするときは、ユーザー名にTemporary ASP.NETファイルフォルダーへのアクセス権を与えて、適切に読み取り/書き込み/実行できるようにする必要があります。

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

「frameworkversion」と「aspversion」を使用しているバージョンに置き換えてください。


-1

手順1:IISでHTTPエラーが生成されたサイトを選択し、次の画像に示すように[ディレクトリの参照]をクリックします。

ステップ2:下の図に示すように、IISの[ディレクトリの参照]ウィンドウで、右側の[アクションで有効にする]をクリックします。

これで、asp.net Webサイトでディレクトリの参照が有効になりました。IISでWebアプリケーションを再起動して、ブラウザーでサイトを参照し、結果を確認してください。



-1

この問題がありましたが、インターネットインフォメーションサービス(IIS)マネージャーに移動し、[ディレクトリの参照]をダブルクリックして[有効にする]をクリックすることで簡単に修正されました。

私の場合、ファイルには直接アクセスできましたが、フォルダにはアクセスできませんでした。


-1

IPアドレスを1桁間違って入力したため、他のサーバーの1つに送信されていました。.NETエラーページが表示されるが、間違ったマシンからのものであるので、非常に混乱します。

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