VS2012 で新しい MVC4 Web ロール プロジェクトを作成すると、Azure で公開して実行すると、HTTP エラー 403 が発生します。MVC4 アセンブリを実行する場合と、MVC4 アセンブリを Web ロールとして使用して Azure 展開アセンブリを実行する場合の両方で、ローカルでの実行は問題ありません。
2 に答える
私はこれを理解するのに多くの時間を費やしました。Google で関連するヒットがなかったため、新しい MVC4 プロジェクトを作成することになりましたが、今回は MVC4 Web ロールを追加するための配置アセンブリのウィザード (右クリック) を使用して作成しました。これはうまくいきました。
web.config のいくつかの違いから、最初の MVC4 アセンブリは .net 4.5 で作成され、私によって .net 4.0 に変更されたのに対し、2 つ目のアセンブリは .net 4.0 用に直接作成されたことがわかりました。それが私が最終的にMVC4リリースノートを見つけた方法です:
箇条書きの 1 つは、私の正確な状況を明確に示しています。
ターゲットを 4.5 から 4.0 に変更した後、Azure で ASP.NET MVC 4 アプリケーションを実行すると 403 Forbidden が発生する:
ASP.NET MVC 4 プロジェクトをターゲット 4.5 の後でターゲット 4.0 に変更し、Azure にデプロイすると、実行時に 403 Forbidden エラーが表示される場合があります。この問題を回避するには、web.config に次を追加します。
<modules runAllManagedModulesForAllRequests="true" />
次回は、新しいリリースについてリリース ノートをより注意深く調べます。
System.WebServer の後に、これを web.config に追加してみてください。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>