【问题标题】:Can't run ASP.NET MVC 2 web app on IIS 7.5无法在 IIS 7.5 上运行 ASP.NET MVC 2 Web 应用程序
【发布时间】:2010-04-17 18:46:05
【问题描述】:

我正在尝试在 Windows 7 的 IIS 下运行 ASP.NET MVC 2 Web 应用程序,但出现 403.14 错误。以下是重现的步骤:

  1. 打开 Visual Studio 2010
  2. 创建一个名为 MvcApplication1 的新 ASP.NET MVC 2 项目
  3. Shift+F5 运行应用程序。您应该会看到 http://localhost:{random_port}/ 并且页面将正确呈现。
  4. 单击 MvcApplication1,然后选择“属性”。转到“网络”部分。
  5. 选择“使用本地 IIS Web 服务器”并创建一个虚拟目录。
  6. 保存。
  7. Shift+F5 运行应用程序。您应该会看到 http://localhost/MvcApplication1/ 和 IIS 错误 HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents of this directory.

很明显,无论出于何种原因,ASP.NET 路由都无法正常工作。

我已经想到并尝试过的事情:

  • 已验证在“打开或关闭 Windows 功能”中启用了所有 IIS 功能。
  • 已验证默认网站配置为使用 .NET 4.0
  • 通过 v4.0.30319 目录中的 aspnet_regiis -i 重新分配 ASP.NET v4 脚本映射。

这是最令人惊奇的部分 - 这是在刚刚建造的机器上。 Windows 7 x64 Ultimate 的新副本,Visual Studio 2010 Premium 的全新安装,没有其他网站,也没有执行其他工作。

还有什么我可以尝试的吗?

【问题讨论】:

    标签: visual-studio-2010 visual-studio iis asp.net-mvc-2 iis-7.5


    【解决方案1】:

    好的,通过以下操作为我解决了这个问题:

    32位目录c:\Windows\Microsoft.NET\Framework\v4.0.30319中运行aspnet_regiis -i

    此时,我不明白为什么 64 位模式不起作用,但我现在已经畅通无阻了。希望这对遇到此问题的其他人有所帮助。

    【讨论】:

    • 这让我发疯了,多么令人沮丧……现在修复了。干杯
    • 非常感谢,这让我快疯了!
    • 好吧,现在有多晚...这对我不起作用。仍然收到有关未定义默认文档的错误
    【解决方案2】:

    我遇到了完全相同的问题,所以感谢您的帮助。

    但是...您是否尝试在 Visual Studio 64 位命令提示符下运行 aspnet_regiis -i 命令(具有管理员权限)?当我这样做时,它已将其修复为 64 位模式。

    为了澄清,我右键单击Visual Studio x64 Win64 Command Prompt (2010) 并选择以管理员身份运行。然后我去了这里:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319
    

    然后这样做了:aspnet_regiis -i

    现在它可以完美运行了。

    【讨论】:

      【解决方案3】:

      还要确保你的配置文件有以下行,否则路由将不起作用。

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

      【讨论】:

      • 在 VS 2012 中使用本地 IIS(不是 IIS Express),这就是答案。谢谢。
      • 没想到会这样。我很高兴我试过了。 (这也适用于 .NET 4.5 MVC 4 应用程序。)
      • 非常感谢!这对我有用。不过,我是 .NET 新手,为什么不将它包含在 web.config 中?
      【解决方案4】:

      不要使用 runAllManagedModulesForAllRequests。您想让 IIS 处理图像等资源。

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

      改为添加 MVC 路由模块

      <system.webServer>
        <modules>
          <remove name="UrlRoutingModule-4.0" />
          <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
        </modules>
      </system.webServer>
      

      【讨论】:

        【解决方案5】:

        另外需要注意的是,确保您的应用程序池设置为集成,而不是经典

        【讨论】:

          【解决方案6】:

          我在 IIS8 / Windows Server 2012 上遇到了同样的问题。在我尝试以下方法之前,许多提议的解决方案都没有奏效。

          dism /online /enable-feature /featurename:IIS-ASPNET45 /All
          

          如果没有“/All”开关,它会抱怨没有安装父功能。

          奇怪的是,根据 Windows 的 Turn Windows Features on or off 工具,asp.net 4.5 已经安装好了。

          无需对 web.config 进行任何更改、添加或删除模块。

          【讨论】:

            【解决方案7】:

            我一直使用 VS 2008 中的自定义服务器设置,它仍然允许我毫无问题地进行调试。不确定它在 2010 年是否会有所不同

            【讨论】:

              【解决方案8】:

              我有这些症状;我的Global.asax 崩溃了。修复了崩溃,现在一切正常。

              【讨论】:

              • 我不小心从部署中排除了我的,并且(duh)部署它解决了我的问题。
              猜你喜欢
              • 2010-12-28
              • 2012-02-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-11-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多