IIS 7 上の Windows Small Business Server 2008 に単純な ASP.NET MVC 4、.NET 4.5 アプリを展開できません。
.NET Framework 4.5 がインストールされています。
アプリケーションのアプリケーション プールの基本設定でそのバージョン (4.5) を確認する必要がありますか? 現時点では、2.0 と 4.0 しかありません。4.5 は 3.5 のようなもので、4.0 フレームワークの上に追加するだけなので、これは正常だと思います。
ホームページを閲覧すると、次のエラーが表示されました。
403 - 禁止: アクセスが拒否されました。指定した資格情報を使用してこのディレクトリまたはページを表示する権限がありません。
Page /page/index という名前の唯一のコントローラーを要求すると、404 not found ページが表示されます。ASP.NET プロセスと同様に、http 要求を取得することはありません。
簡単な HTML ページをリクエストできます。
アプリケーション プールは .NET 4.0 に設定され、マネージド パイプライン モードとして統合されています。
NETWORK SERVICE には、ディレクトリへの読み取り/書き込みアクセス権があります。
もちろん、アプリはVS2012から問題なく動作します。
ここに何が正しくないかはわかりません。検索エンジンのクエリはあまり役に立ちません。
誰もがヒントを持っていますか?それは非常に高く評価されます. ありがとう
編集
dll は、System.Web.Mvc、System.Web.Razor などの bin フォルダーに既に存在します。
asp.net ワーカー プロセスが要求を取得していることを確認するために、空の test.aspx ページを作成しました。はい、ページは問題ありませんでした。そのため、MVC ルーティングが機能していないように見えますが、そのサーバーで ASP.NET MVC 3 Web アプリが正常に動作しています。
.NET 4.5 のインストール後、場合によっては aspnet_regiis -iru を実行して、アプリに aspnet_client フォルダーを追加しましたが、それでも問題は解決しません。
匿名認証は IIS 認証セクションで有効であり、承認はすべてのユーザーを許可します。
ASP.NET MVC 4 がインストールされていることを確認するために修復を行いました。
ASP.NET MVC 4 がインストールされていても、標準の aspnet エラーではなく、/page/index アクションの要求による 404 エラーが標準の IIS によって返されます。実際、MVC 4 フレームワークが正しくインストールされていないように見えます。再確認して修復するだけです。どこで調査を続行できますか?
@Mystere Man、匿名認証を変更して、アプリケーションプールIDを使用し、アプリを停止して開始しても、同じエラーが発生します。ASP.NET MVC 4 が要求を受け付けていないかのように見えます。
以下は web.config の一部です。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<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>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
編集 2012/09/27
Microsoft Framework .NET 4.5 を再ペアリングし、ASP.NET MVC 4 を修復し、単純な ASP.NET MVC 4 アプリを再展開しましたが、それでも同じ動作が得られます。次に何をすべきかわからないので、誰かが問題を見つけるのを手伝ってくれることを期待して、報奨金を始めました。
編集 2014/01/31
その質問をしたとき、問題が解決したため、runAllManagedModulesForAllRequests を受け入れられた回答としてフラグを立てました。しかし、私は確かにこれを本番環境で使用するつもりはありませんでした. なぜ私はこれをしなければならなかったのかと尋ねましたが、答えはありませんでした。
マーティン・ホリングスワースの答えは本当に私が探していたものでした.runAllManagedModulesForAllRequestsに関連するすべてのパフォーマンスの問題なしにこの問題を修正する良い方法です.
私たちはほとんどあきらめて、新しい Windows 2012 サーバーを購入しました (そこから ASP.NET MVC アプリがそのまま動作します)。Martin のソリューションを試したところ、Windows 2008 サーバーは機能しました。