54

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 サーバーは機能しました。

4

9 に答える 9

46

これを使用してみてください:

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

編集:

上記のソリューションは、.NET3.5以下で機能します。.NET 4.0以降を使用している場合は、IIS7QFEをインストールしてみてください。

また、この記事は、これら2つの違いを理解するために読む価値があります。

于 2012-09-29T13:54:06.943 に答える
2

https://stackoverflow.com/a/12521807/695829によると

同じ問題があり、このホットフィックスで修正されました: http://support.microsoft.com/kb/980368

于 2013-05-01T01:51:07.370 に答える
1

SonicTheLichen が述べたように、Visual Studio からパブリッシュする場合、global.asax ファイルはデフォルトではコピーされません。global.asax を Web サーバーにコピーすると、問題が解決するはずです。ソリューションを証明してくれた SonicTheLichen に感謝します。

よろしく、 サウラブ

于 2014-04-23T18:13:28.507 に答える
0

これで問題が解決するかどうかはわかりませんが、IIS にデプロイした MVC アプリを修正しました。

アプリケーションのホーム/仮想ディレクトリのワイルドカード アプリケーション マップを aspnet_isapi.dll に追加する必要がありました。これを行うには、Web サイト/仮想ディレクトリを右クリックしてホーム ディレクトリ/仮想ディレクトリ タブを選択し、構成ボタンをクリックしてから、ワイルドカード アプリケーション マップ セクションの下にある [挿入] ボタンをクリックします。

C:\WINDOWS\microsoft.net\Framework64\v4.0.30319\aspnet_isapi.dll

幸運を!

于 2012-10-04T13:41:00.540 に答える
0

私はこれが古いことを知っていますが、Windows の更新はちょうど私のために数時間を無駄にしました:

Global.asaxで例外を処理する場合、これはWindowsの更新を開発環境と同じに保つこともできます...私にとっては、明らかにそうではありませんでした.私のglobal.asaxが処理しようとしたもので、同じ問題がありましたが、根本的な問題を隠していました.....

于 2015-04-02T20:57:06.507 に答える