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

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,选择“属性”。转到“Web”部分。 5. 选择“使用本地IIS Web服务器”并创建虚拟目录。 6. 保存。 7. 再次按Shift + F5运行应用程序。您应该会看到http://localhost/MvcApplication1/和IIS错误HTTP错误403.14-禁止Web服务器配置为不列出此目录的内容。
很明显,由于某种原因,ASP.NET路由未正常工作。
我已经考虑并尝试过以下事项:
- 验证“打开或关闭Windows功能”中启用了所有IIS功能。 - 验证默认网站配置为使用.NET 4.0 - 通过aspnet_regiis -i重新分配了ASP.NET v4 scripmap在v4.0.30319目录中。
最令人惊奇的是,这是在一台刚建成的机器上进行的。全新的Windows 7 x64 Ultimate副本,Visual Studio 2010 Premium干净安装,没有其他网站和其他工作。

还有其他我可以尝试的吗?

Setting Visual Studio to use local IIS web server

8个回答

86

好的,这对我来说已经解决了,做法如下:

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

此时,我不明白为什么64位模式无法工作,但是现在我已经解除了阻塞。希望这可以帮助任何遇到此问题的人。


这让我疯狂了,太令人沮丧了...现在已经解决了。干杯! - Rohan West
非常感谢,这真让我抓狂! - mynameiscoffey
1
这个太晚了...对我没用。仍然出现一个关于默认文档未定义的错误。 - Ortund

46

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

不过...你是否尝试在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

现在它完美运行。


26

还要确保您的配置文件中有以下行,否则路由将无法正常工作。

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

2
使用VS 2012和本地IIS(而非IIS Express),这就是答案。谢谢。 - Kyle Trauberman
没想到这样做就可以了,我很高兴尝试了一下。(这是针对.NET 4.5 MVC 4应用程序的。) - Cody
非常感谢!这个方法对我很有效。虽然我是.NET的新手,但为什么一开始就没有把它包含在web.config中呢? - jaywhy13

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>

7

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


4

我在IIS8 / Windows Server 2012上遇到了同样的问题。在尝试多种解决方案无效后,直到我尝试了以下方法。

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

没有使用'/All'开关时,它会报告一个父功能未安装。奇怪的是,根据Windows的“打开或关闭Windows功能”工具,asp.net 4.5已经安装了。不需要对web.config进行任何更改,添加或删除模块。

0

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


0
我遇到了这些症状:我的Global.asax崩溃了。修复了崩溃,现在一切都正常工作了。

我不小心将我的文件从部署中排除了,而(呃)部署它解决了我的问题。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接