我最近下载了VS2010的beta 2,并开始使用ASP.NET MVC2。最初的开发是用Casini完成的,但现在我想从IIS 7.5(我运行的是Windows 7)运行应用程序。
我已经安装了IIS6元数据库兼容性,我以管理员身份运行VS2010,以便可以从项目设置的“Web”选项卡中使用“创建虚拟目录”按钮。
这在IIS中创建了Web应用程序条目,但它不工作。
我已经安装了IIS6元数据库兼容性,我以管理员身份运行VS2010,以便可以从项目设置的“Web”选项卡中使用“创建虚拟目录”按钮。
这在IIS中创建了Web应用程序条目,但它不工作。
当我去主页(http://localhost/MyMvcApp/)我得到一个HTTP 403错误。当我直接去一个子页面(http://localhost/MyMvcApp/Home/),我得到一个HTTP 404。
所以我猜为某些原因的URL路由不工作。
我已经添加了UrlRouting作为一个模块和一个处理程序的web.config。在我的搜索,这是提供作为一些解决方案的一些similair问题。但对我来说,这还是不行。
我的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,PublicKeyToken=31BF3856AD364E35" />
- <add assembly="System.Web.Mvc,Version=2.0.0.0,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,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,PublicKeyToken=b03f5f7f11d50a3a" />
- </handlers>
- <httpErrors errorMode="Detailed" />
- </system.webServer>
解决方法
我刚刚有这个问题,不幸的是这里的修复没有为我工作。
什么工作是运行这:
- %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
在命令窗口…工作像一个梦想现在!
(所以,是ASP.Net没有安装到IIS默认情况下,当你安装VS2010?)