web-dev-qa-db-ja.com

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

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

144
savvas sopiadis

たぶんそれは誰かに役立つでしょう:.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>
223
Cyril Mestrom

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

122
Brettski

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

30
Bogdan Litescu

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

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

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

10
savvas sopiadis

同じ問題がありました。このマイクロソフトのサポート記事で修正されました。
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を処理できます。

8
Donny V.

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

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

enter image description here

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

enter image description here

お役に立てれば...

7
Murat Yıldız

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

  1. aspnet_regiis -i in Windows\Microsoft.Net\Framework

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

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
    
7
Stefan Michev

X64を実行している場合は、アプリプール設定で32ビットアプリケーションが有効になっていることも確認してください

enter image description here

6

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

4
JTTx

ここですべてを試しました。何も機能しませんでした。問題は私の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" />
2
codeMonkey

「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

2
Vishal Sen

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

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

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

もう1つ:新しいバージョンのWindowsではaspnet_regiisおよびIISを使用できないため、試してください

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

間違ったManaged pipeline modeがこのエラーの原因になる場合があることに注意してください。 integratedclassicを選択するには、2つの選択肢があります。

2
Joe.wang

また、もう一つのことが可能です

.net framework 4.0を手動でインストールする

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

管理特権でcmdを開く

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

タイプaspnet_regiis.exe -i

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

iIS7を更新します

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

1

また、次の理由で提供されているすべてのソリューションにもかかわらず、この同じエラーが発生しました。

  • 不足しているDLL
  • データベース接続文字列は、アクセスできないサーバーを指します。
1
eulerfx

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

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

1
MercifulGiraffe

Global.asaxファイルを確認してください。私の場合、それは空でした。

1
oyenigun

ここで提案されたすべての解決策を試した後、私はさらに別の可能な解決策を見つけました: RLScan

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

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

0
Felix Beifuß

C#4.5のASP.NETプロジェクトでは、Web Platform InstallerでinstallingASP.NET extensionによってそのような問題を解決しました。

0
Gareev Kamil

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

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

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

0
Scott Izu

私はあなたが内部ホストでこの問題を抱えていたことを知っていますが、以前は外部ホストでそのような問題を経験していましたが、私の場合はそれが独自の解決策を持っていたので、誰かの時間を節約できるかもしれません:

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

0
Mohammad lm71

私は使用しています:Win Server 2012 R2/IIS 8.5/MVC4/.Net 4.5

上記のいずれも機能しない場合は、これを試してください:

「公開中のプリコンパイル」のチェックを外す

これは数日間私の尻を蹴った。

0
D. Kermott

ここにさらに別の回答を追加します。 IIS 10.0を実行しているWindows 2016 Serverの場合、IISが正しくインストールされていない可能性があります。あなたがここにいることに気づいたら、私が提案することをここに示します。

  1. Visual Studioで、アプリの開発に使用した.NETフレームワークのバージョンを確認します。プロジェクト、プロパティページ、アプリケーションタブを右クリックします。ターゲットフレームワーク。私の場合、4.6.1でした。

  2. Webサーバーで、Googleの「.net framework 4.6.1をダウンロード」し、MSダウンロードページに移動します。このページで、ブラウザーのユーザーエージェントが必要とするバージョンを適切に判断する必要があります。私の場合、それはX64でした。

  3. インストーラーを実行します。既に存在していると思われる場合でも安全です。 「インストール済み」の場合は「インストール済み」と表示されます。

注:ここで、Windows機能として適切に「有効化」されていることを確認する必要があります。また、ASP.NET IISコンポーネントが適切にインストールされ、有効になっていることも確認する必要があります。

  1. 再びWebサーバーで、サーバーマネージャーに移動し、役割と機能を追加してから、役割ベースまたは機能ベースを選択します。次へをクリックします。

  2. [宛先サーバー]タブでローカルサーバーが選択されていることを確認し、[次へ]をクリックします。

  3. [サーバーの役割]タブで、[WebサーバーIIS]および[アプリケーション開発]を展開します。サーバー側のインクルードとWebsocketプロトコル以外はすべて必要です。

  4. 管理ツールで、必要な特定のレガシー機能のために、すべて(IIS 6 MMCを含む)を有効にすることを選択しましたが、それは別の投稿です。

私の場合、再起動は必要ありませんでした。これが誰かを助けることを願っています。

0

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

0
NickG

私の場合、web.configおよび/ binフォルダー以外のすべてのファイルが欠落していました(どうにかコピーされません)。
愚かですが、それが最後に確認したものです。

0
eitanpo

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」を使用しているバージョンに置き換えてください。

0
dalemac