无法在 IIS 7.5 上运行 ASP.NET MVC 2 Web 应用程序

Posted

技术标签:

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

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

    打开 Visual Studio 2010 创建一个名为 MvcApplication1 的新 ASP.NET MVC 2 项目 Shift+F5 运行应用程序。您应该会看到 http://localhost:random_port/ 并且页面将正确呈现。 单击 MvcApplication1,然后选择“属性”。转到“网络”部分。 选择“使用本地 IIS Web 服务器”并创建一个虚拟目录。 保存。 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 的全新安装,没有其他网站,也没有执行其他工作。

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

【问题讨论】:

【参考方案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)部署它解决了我的问题。

以上是关于无法在 IIS 7.5 上运行 ASP.NET MVC 2 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 7.5 上运行 ASP.NET Core 时,日志在哪里?

ASP.Net / IIS 7.5 无法识别用于 OutputCache 的 jMeter

IIS 7.5 上的 ASP.NET MVC

IIS 7.5 上的 ASP.NET MVC

IIS 7.5 中的 Asp.net mvc 4 应用程序问题

IIS 7.5 上的调试与发布模式