63

我正在尝试在 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
  • aspnet_regiis -i通过在v4.0.30319目录中重新分配 ASP.NET v4 脚本映射。

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

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

将 Visual Studio 设置为使用本地 IIS Web 服务器

4

8 回答 8

86

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

aspnet_regiis -i32 位目录下运行c:\Windows\Microsoft.NET\Framework\v4.0.30319

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

于 2010-04-18T03:21:09.000 回答
46

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

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

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

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

并做到了这一点:aspnet_regiis -i

现在它完美地工作了。

于 2010-05-07T01:23:02.507 回答
26

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

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
于 2010-05-24T13:03:48.290 回答
8

不要使用 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>
于 2013-05-10T03:39:08.280 回答
7

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

于 2011-03-09T14:51:09.687 回答
4

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

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

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

奇怪的是,根据 Windows 的“打开或关闭 Windows 功能”功能,asp.net 4.5 已经安装好了。

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

于 2016-06-08T17:41:55.130 回答
0

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

于 2010-04-17T19:48:37.763 回答
0

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

于 2013-04-04T18:18:35.557 回答