我最近下载了 VS2010 beta 2 并开始使用 ASP.NET MVC2。最初的开发是使用 Casini 完成的,但现在我想从 IIS 7.5 运行该应用程序(我运行的是 Windows 7)。我已经安装了 IIS6 元数据库兼容性,并以管理员身份运行 VS2010,因此我可以使用项目设置的“Web”选项卡中的“创建虚拟目录”按钮。这在 IIS 中创建了 Web 应用程序条目,但它不起作用。

当我进入主页时(http://localhost/MyMvcApp/)我收到 HTTP 403 错误。当我直接进入子页面之一时(http://localhost/MyMvcApp/Home/)我收到 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>
有帮助吗?

解决方案 2

经过检查,并试图我注意到了“打开或关闭Windows功能”对话框,“HTTP错误”和“HTTP重定向”不翼而飞。 因为据我记得这是由微软Web平台安装程序自动安装这是奇怪的。 与MVC工作时,在任何情况下,“HTTP重定向”好像需要到有特点。所以之后我安装了它一切似乎都很好地工作。

其他提示

我只是有这个问题,可惜修复这里并没有为我工作。

什么做的工作是运行以下命令:

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

在命令窗口......就像一个梦吧!

(那么,是ASP.Net不是当您安装Visual Studio 2010默认安装到IIS?)

添加到您的web.config文件:

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

手动执行此操作非常痛苦。但 绝对可行!我成功了并在这个分步指南中总结了它 将 MVC 2 项目添加到现有的 Web 表单解决方案 这里。希望这可以帮助...我花了很长时间才完成所有配置设置,而且关于这个主题的资源似乎很少。

请注意,您必须ASPNET_REGIIS.EXE -ir以管理员身份运行,似乎很明显,但是当你累的,但没有成功解决这一尝试新事物,你可以通过它。

只是说非常感谢所有的回应,许多小时后尝试不同的东西,最后我能得到工作,我的MVC 2的应用程序在IIS。

什么帮助我的是使用的应用程序池经典管道,而不是集成: “替代文字”

我是建设在我的笔记本视窗7的MVC2应用程序,使用.NET的β2和 VS 2010 Beta 2中当我安装了Windows Server 2008,包括VS对整个开发环境,建立了解决方案,并运行它,路由正常工作。

下一步是建立在Windows Server 2008在生产服务器上,关于这一点我部署的.NET 4.0 Beta版,但没有哪个来与VS 2010 Beta下载其他的东西。 在此配置下的路由从未工作直到启用HTTP重定向用的Jeroen所示。

希望这可以帮助别人谁可能是在同一条船上。

只是想指出,我与403和404相同的问题,但加入system.webServer和所有从system.web/pages/namespaces节点的元素解析对我来说。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top