web-dev-qa-db-ja.com

ASP.MVC2 / VS2010アプリケーションをIIS 7.5で動作させる

最近、VS2010のベータ2をダウンロードし、ASP.NETMVC2で遊び始めました。最初の開発はCasiniで行われましたが、IIS 7.5(私はWindows 7を実行しています)からアプリケーションを実行したいと思っていました。IIS6メタベースの互換性をインストールし、管理者としてVS2010を実行しましたプロジェクト設定の[Web]タブから[仮想ディレクトリの作成]ボタンを使用できるようにしたため、IISにWebアプリケーションエントリが作成されましたが、機能しません。

メインページに移動すると( http:// localhost/MyMvcApp / )HTTP403エラーが発生します。サブページの1つに直接移動すると( http:// localhost/MyMvcApp/Home / )、HTTP404を取得します。

そのため、何らかの理由でURLルーティングが機能していないと思います。すでにUrlRoutingをモジュールおよびハンドラーとしてweb.configに追加しました。私の検索では、これはいくつかの類似の問題の解決策として提供されています。しかし、私にとってこれはまだ機能しません。

私のweb.configの興味深い部分は次のようになります。

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add Assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add Assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add Assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
  <membership>
    <providers>
      <clear />
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
  </membership>
  <profile>
    <providers>
      <clear />
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
  </profile>
  <roleManager enabled="false">
    <providers>
      <clear />
      <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
      <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
  </roleManager>
  <pages>
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
  <httpHandlers>
    <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
  </httpHandlers>
  <customErrors mode="Off" />
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" >
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </modules>
  <handlers>
    <remove name="MvcHttpHandler" />
    <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  <httpErrors errorMode="Detailed" />
</system.webServer>
26

さらに確認して試してみると、「Windowsの機能をオンまたはオフにする」ダイアログで「HTTPエラー」と「HTTPリダイレクト」が欠落していることに気付きました。私が覚えている限り、これはMicrosoft Web Platform Installerによって自動的にインストールされたため、これは奇妙なことです。いずれにせよ、「HTTPリダイレクト」は、MVCを操作するときに必要な機能のように見えました。それで、私がそれをインストールした後、すべてが完全に機能しているように見えました。

26

この問題が発生しました。残念ながら、ここでの修正はうまくいきませんでした。

何が機能したのかはこれを実行していました:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

コマンドウィンドウで...今は夢のように機能します!

(つまり、ASP.NetはVS2010をインストールするときに、デフォルトでIISにインストールされませんか?)

49
Paul

これをweb.configファイルに追加します。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>
5
Petrus Theron

これを手動で行うのはとても苦痛です。しかし、間違いなく実行可能!私はそれを管理し、このステップバイステップガイドで 既存のWebフォームソリューションにmvc 2プロジェクトを追加する で要約しましたここに。これがお役に立てば幸いです...すべての構成設定を実行するのに何年もかかり、このテーマに関するリソースは非常に少ないようです。

2

管理者としてaspnet_regiis.exe-irを実行する必要があることに注意してください。これは明らかなようですが、それを解決するのに成功しないことにうんざりしている場合は、合格することができます。

すべての回答に大いに感謝します。何時間もさまざまなことを試した後、ついにIISでMVC2アプリを動作させることができました。

1
Msam85

私に役立ったのは、統合ではなく、AppPoolに従来のパイプラインを使用することです: alt text

1

403と404で同じ問題が発生していましたが、system.webServersystem.web/pages/namespacesノードのすべての要素を追加することで問題が解決したことに注意してください。

0
fordareh

ラップトップWindows7で.netベータ2とVS2010ベータ2を使用してMVC2アプリケーションを構築していました。VSを含む開発環境全体をWindowsServer 2008にインストールし、ソリューションを構築して実行すると、ルーティングは正常に機能しました。

次のステップは、Windows Server 2008で運用サーバーを作成することでした。このサーバーに、.net 4.0ベータ版を展開しましたが、VS2010ベータ版のダウンロードに付属していた他のものはありませんでした。この構成では、Jeroenが示すようにHTTPリダイレクションを有効にするまで、ルーティングは機能しませんでした。

これが同じボートに乗っているかもしれない誰かを助けることを願っています。

0
Milton