最近、VS2010 のベータ 2 をダウンロードし、ASP.NET MVC2 を試し始めました。最初の開発は Casini で行いました。しかし、今度は IIS 7.5 (Windows 7 を実行しています) からアプリケーションを実行したいと考えました。IIS6 メタベース互換性をインストールし、VS2010 を管理者として実行して、プロジェクト設定の [Web] タブから [仮想ディレクトリの作成] ボタンを使用できるようにしました。これにより、IIS に Web アプリケーション エントリが作成されましたが、機能しません。
メインページ(http://localhost/MyMvcApp/) HTTP 403エラーが発生します。サブページのいずれかに直接アクセスすると(http://localhost/MyMvcApp/ホーム/) HTTP 404 が表示されます。
何らかの理由で 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>
ベストアンサー1
私もちょうどこの問題に遭遇したのですが、残念ながらここでの修正はうまくいきませんでした。
うまくいったのは、これを実行することでした:
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
コマンド ウィンドウで... 今では夢のように動作します。
(それでは、VS2010 をインストールすると、ASP.Net はデフォルトで IIS にインストールされないのでしょうか?)