MVC4 HTTPエラー403.14-禁止


88

ローカルで正常に動作する.net4.5 ASP.NET MVC4 Webアプリ(IIS Expressと開発サーバー)を構築しましたが、Webサーバーに展開すると403エラーがスローされます。私はサーバーに.Net 4.5RCをインストールし、aspnet_regiis -i 以前のバージョンのMVC / .Netの問題について誰もが推奨したビットを試しましたが、 役に立ちませんでした。

何か案は?

編集:状況についての詳細情報。サーバーは32ビットで、正常に動作する他の4つのMVC3アプリケーションがあります。動作していないのは、私のMVC4アプリだけです。


新しいasp.net 4.5 Webフォームアプリを作成したときに、この同じ問題に遭遇しました。ローカルで正常に動作しましたが(IIS 7.5)、テストサーバー(IIS 7.5)に展開すると、バンドルされて縮小されたほとんどのJavaScriptおよびCSSファイルが404 Not Foundでロードに失敗しました。runAllManagedModulesForAllRequestsに関する以下の回答で問題が解決しました!
ClearCloud8 2012年

:私はでこの質問に答えたかもしれ stackoverflow.com/questions/24343788/...
fsbf

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

回答:


172

試す

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

経由

/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website


1
それが整っていれば、すべてが行われ、それでもMVC 4サイトのみが機能します。これを機能させるには、他にもいくつかのトリックが必要です。
Maxim V. Pavlov 2012

1
この。他のすべてのストックソリューションを喜びなしで試しましたが、これが問題を分類したものです。
Julia Hayward 2013年

1
親愛なる友人、私はそれをしますが、それはうまくいきません。本当に、私はMVC 4とVisualStudio 2012で作業していましたが、私のプロジェクトは昨日までうまくいきますが、コードに通常の変更を加えた後、デフォルトページ(ホーム/インデックス)でこのエラーが発生します。どんな体でも私を助けてくれますか?..
A.Dara

4
この修正はこの問題には適していません(Jason Koopmansの回答のリンクを参照してください)。より良いここに関連する修正プログラムをダウンロードしてmicrosoft.com/en-us/download/...
アフマドイブラヒム

@AhmadIbrahimそれは実際には問題の解決策です。修正は64ビットのみです。質問は明らかに32ビットを示しています。RAMMFARが最も信頼できる作業ソリューションである特定の構成があり、CDNが適切に使用されている場合、サーバーの負荷が最小限になります。
MarkKGreenway 2014

22

エラー403.14は、ディレクトリの内容を一覧表示することを許可されていないためのHTTPエラーコードです。確認してください

  1. IISでアプリケーションとしてWebサイトを設定しました
  2. サーバーに.NET 4.5がインストールされている
  3. .NETフレームワークの適切なバージョンを実行するようにアプリケーションプールを設定しました(つまり、.NET 2.0に設定されていません)
  4. アプリケーションプールで統合パイプラインを使用している
  5. .NET 4.5は実際にはIISに登録されています。同様の問題/解決策については、この投稿を参照しください

通常、aとdは、IISへのMVC展開を取り巻く最大の問題です


1.ウェブサイトをアプリケーションとして設定していません。2. .net 4.5をインストールしました。3。適切なフレームワークをターゲットにしたアプリプールがありました。4.私のプールはクラシックを使用するように設定されていましたが、統合に変更しましたが、役に立ちませんでした。5. 4.5が登録されていると思います。
mithun_daa 2012

1
@mithun_daa-ウェブサイトをアプリケーションとして設定していない場合は、かなり簡単です->仮想ディレクトリ/ウェブサイトを右クリックして[アプリケーションに変換](またはアプリケーションを追加すると、今のところ用語が表示されません)
Tommy

これはMVC4固有のものですか?MVC3プロジェクトをアプリケーションとして設定したことがなく、問題なく動作します。
mithun_daa

その後、どのように展開するか->でも、.NET WebアプリケーションはIISでアプリケーションとして設定する必要があります。ただし、これらをデフォルトのWebサイトに配置するだけの場合は、デフォルトのWebサイトアプリケーションで実行されます。既定のWebサイトのアプリケーションプールが正しく構成されていることを確認してください(.NET 4 /統合)。IISで仮想ディレクトリ/仮想Webサイトを作成する場合、独自のアプリケーションに設定することもできます。
トミー

おそらく混乱しましたが、どのサイトもデフォルトのWebサイトの下にありません。IIS7で[サイト]を右クリックし、[Webサイトの追加]を選択します。それは私がやっている方法です。
mithun_daa

11

おそらく...公開ウィザードを使用して(私がしたように)、[公開中にプリコンパイルする]チェックボックスをオンにして(同じように)、同じ現象が発生した場合は...

ええ、私は頭をぶつけましたが、このボックスのチェックを外した後、一見無関係な設定で、説明したすべての症状は再配置後に消えます。

うまくいけば、これは一部の人々を修正します。


これが発生している場合、考えられる根本的な原因は、運用環境に外部ライブラリの異なるバージョンがあることです。私は私のMVCアプリは本番サーバでサードパーティ製のDLLの新しいバージョンと古いバージョンに対してコンパイルしていた...
ValGe

少年の不思議、子供、奇跡の男、現象、止められない、王、ここに@ブライアンカークパトリックの女性と紳士に
ルイスビジャ

10

Windows->スタート->未亡人機能のオン/オフ

必要なオプションを確認してください

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


6

応募する前に

runAllManagedModulesForAllRequests="true"/>

それほど抜本的ではない代替案を示唆する以下のリンクを検討してください。投稿では、著者がローカルのweb.configに次の変更を加えています。

  <system.webServer>
    <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html


これが本当の答えです。ありがとう!
スパイボニアス

5

Visual Studio 2012のリファクタリング->名前変更バグがあり、RouteConfig.csのurlパラメータのリテラル文字列内の「id」の名前が誤って変更されました。これにより、Windows Server 2012とWindows Server 2008 R2の両方で、フレッシュで正常なセットアップで403.14が発生しました。

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

に変更されました

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{renamed_text}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

私にとってずっと前に、すべてのルートの名前を構成することを避けるnullためにnameパラメーターに入力できることを発見しました。これはまた、VS2013のプロジェクトでは、.NET 4.5.1、MVC 5を実行しているだけで私たちのprod環境、勝利サーバー2008 R2で、時には403を(原因となることが判明し解決するために、私は、各ルートの名前を追加しました。。
tristankoffee

2

開発サーバーでテストするときに統合パイプラインを使用していて、ライブIIS 7.5 Webサーバーにクラシックパイプラインモードとしてインストールする場合、403を取得することもできます。また、必要なapp_dataフォルダーがありませんでした。


2

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


同じ回答を複数の場所に投稿するのはなぜですか?
devnull 14

8
私が解決策を追跡しようとしたので、それは両方に関係しています。誰かを狩りから救ってください。
Mastro 14

重複した回答を投稿しないでください。私が言えることはそれだけです。
devnull 14

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

上記のコードを使用できます


1

新しいアプリのアプリケーションプールをDefaultAppPoolIISのに設定しました。IISは明らかにでClassicパイプラインを使用してい.NET v.2.0ます。

この問題を解決するために、Integratedパイプラインとを使用して新しいアプリプールを作成しました.NET v4.0。この新しいアプリケーションのためだけに、すべてが期待どおりに機能し始めました。

この新しいアプリプールをアプリケーションに割り当てることを忘れないでください。IISでアプリケーションを選択し、をクリックBasic Settingsして、アプリの新しいアプリプールを選択します。


0

最近よく目にするのはIISで、32ビットアプリケーションの実行を許可しています

これはあなたが試したことです。それ以外の場合は、本番サーバーと開発サーバーのバージョンに関する詳細情報が必要です


申し訳ありませんが、私はあなたが言ったことを守りませんでした。これは32ビットサーバーです。情報を追加するために投稿を更新しました。
mithun_daa

ああ...別々のapp_poolsにありますか?
MarkKGreenway 2012

はい、実際のところ、私のサイトにはそれぞれ独自のアプリプールがあります。
mithun_daa

0

私は少し異なる問題を抱えていますが、サーバー2012でどういうわけかasp.net 4.5を有効にするのを忘れたので、この問題がある場合は、有効にすることを再確認してください。


0

AzureとASP.NET 4.5、IIS 8でWindows Server 2012 R2を実行しています

プログラムと機能のASP.NETアイテムをすべてアンインストールし、役割と機能の追加を使用してサーバーマネージャーでこのようにASP.NETを再インストールすることでこの問題を解決しました。選択した役割ベースまたは機能ベースのインストール、サーバーの選択、そして[サーバーの役割の選択]で、[Webサーバー(IIS)/ Webサーバー/アプリケーション開発]を選択し、[ASP.NET 4.5]をクリックして、前提条件のインストールを確認し、ASP.NET 4.5を再インストールしました。

以前の検索では、問題は実際にはASP.NETの登録の問題に起因していると思いました。ASP.NETの以前のバージョンでは、実際に再インストールせずにASP.NETを登録するために実行できるユーティリティがありますが、それはもう利用できないようです。


0

Visual Studioを開いて参照を展開し、プロパティ「ローカルのコピー」を「True」に変更する問題を解決します。

私はこれが古いバージョンのdllと新しいバージョンのDLLを比較していることを発見しました(それは機能していませんでした)


0

私の場合、私のアプリケーションのデフォルトページはindex.htmlで、デフォルトのドキュメントオプションにはありませんでした。追加すると、403.14 Forbiddenエラーが修正されました。


0

私の場合、問題は一種のグローバルフィルター属性であるカスタムActionFilterAttributeが原因でした。属性はAutofacを介してサービスをインスタンス化しましたが、サービスはコンストラクターでクラッシュしました:

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}

0

私の場合、Windowsの機能もaspnet_regiis -i作業も行いませんでした。何時間もインターネットを掘り下げた後、私は自分の解決策を作りました:

  1. モジュールのIISマネージャーで、UrlRoutingModule-4.0ノードの継承をローカルに変更しました。

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

  2. web.configに、このフォーラムからいくつかのヒントの組み合わせを貼り付けました:

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="UrlRoutingModule-4.0"></remove>
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add>
        </modules>
    </system.webServer>

それが役に立てば幸い

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