ASP.NET MVC 在 IIS 7.5 上 - 错误 403.14 禁止访问

342

我正在运行Windows 7 Ultimate(64位),使用Visual Studio 2010 RC。最近,我决定让VS在IIS上运行/调试我的应用程序,而不是使用其中的开发服务器。

然而,每次我尝试运行MVC应用程序时,都会出现以下错误:

HTTP错误403.14 - 禁止访问:Web服务器配置为不列出此目录的内容。详细信息

错误信息

模块 DirectoryListingModule

通知 ExecuteRequestHandler

处理程序 静态文件错误

代码 0x00000000 请求的

URL http://localhost:80/mySite/

物理路径 C:\myProject\mySite\

登录方法 匿名登录

用户 匿名

我在该目录中放置了一个 default.aspx 文件,但收到了以下错误:

HTTP错误500.21 - 内部服务器 错误处理程序"PageHandlerFactory-Integrated"在其模块列表中具有 错误的模块 "ManagedPipelineHandler"

是否有其他步骤我忘记了以使其正常工作?

注:我安装了IIS 7.5,然后安装了VS 2010 RC。我在Visual Studio 2010的MVC项目的“属性”下的“Web”选项卡中使用了内置的“创建虚拟目录”按钮。我确保应用程序正在使用ASP.NET 4应用程序池。

以下是我拥有的IIS安装功能。

输入图像描述


5
我也遇到了同样的问题。我已将应用程序设置为使用4.0继承模式,运行了注册命令以将.NET与IIS(7.5)注册,但仍然遇到这个错误。 - Collin White
2
我终于找到了我的设置中的问题,那就是我将文件“_Layout.cshtml”重命名为“_PageLayout.cshtml”,并且在“_ViewStart.cshtml”中进行了相应的更改,但显然这还不够。一旦我将名称恢复为“_Layout.cshtml”,它就开始工作了。令人困惑的是,“_PageLayout.cshtml”在Win7 32位上被正确捕获,但在Win7 64位或WinSvr2K8 R2上未被捕获。 - Umar Farooq Khawaja
3
有人在Windows 8和IIS 8上找到了解决方案吗? - Eric Z Beard
3
如果您使用的是Windows Server 2012或Windows 8,请查看以下链接:https://dev59.com/kWct5IYBdhLWcg3wXsbH - Lomak
我发现我必须在IIS中重新创建我的应用程序才能使其正常工作。 - Ben Power
显示剩余5条评论
28个回答

2

虽然看起来很奇怪,但对我来说,重新安装 IIS 是有效的解决方法。在 .net 版本文件夹内运行以下命令:

(保留原html标签)

aspnet_regiis.exe /i

enter image description here

当我第一次运行此命令时,我遇到了HTTP错误403.14。但是当我再次运行该命令时,问题得到了解决。

注意:另外一件事是在重新安装IIS之前从服务器管理屏幕中删除HTTP重定向。也许这也对解决问题有影响,但我不确定。因此,如果重新安装IIS仍然无法解决问题,请尝试删除HTTP重定向,然后再试一次。希望这也能为您解决问题。


FYI,aspnet_regiis.exe 不会安装或重新安装 IIS,它只是注册特定的 .NET Framework 版本,以便 IIS 可以用于托管应用程序。 - stephen

2

为此问题添加另一个解决方案。

在我的Global.asax.cs文件中,我使用以下代码禁用了尝试使用MVC管道消耗php文件:

routes.IgnoreRoute( "{*php}" );

我之前在MVC2项目中做过这些操作,效果很好,但是在我的MVC 3应用程序中这样做会导致上述问题。


1

为了解决这个问题,而不必使用32位模式,您将需要更新此项目的源代码

public static void RegisterUrlRoutesFromAttributes(RouteCollection routes)
{
    // Enumerate assembly for UrlRoute attributes.
    List<MapRouteParams> routeParams = new List<MapRouteParams>();
    AppDomain.CurrentDomain.GetAssemblies()
        .ToList()
        .ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly)));

我已经在IT云CodePlex项目的讨论版块上提出了这个问题。

http://itcloud.codeplex.com/discussions/262000


1
这对我有用,也可能对其他人有用。 也许并非所有所需组件都存在或/和未正确注册。为了解决这个问题,请尝试在控制面板中取消选中“打开或关闭Windows功能” -> Internet Information Services -> World Wide Web Services -> 应用程序开发功能内的所有选项,然后重新选择所有选项,重置IIS并检查问题是否已解决。

enter image description here


1
如果您在Windows 8或Server 2012上运行IIS 8.5,可能会发现在虚拟目录中运行mvc 4/5(.net 4.5)无法正常工作。如果您在主机文件中创建本地主机条目以指向本地计算机,然后将新的本地IIS网站指向该文件夹(具有匹配的主机头条目),则会发现它可以正常工作。

0

我创建了一个新的命名空间(因此也是文件夹),与控制器的路由相同(例如MvcApp/Test/SomeClasses.csMvcApp/Controllers/TestController.cs)。这也导致了403.14错误!


0
对我来说,解决方案是将NuGet包Microsoft.AspNet.WebPages(以及它的Razor和Infrastructure依赖项)添加到我的Web项目中。
由于Infrastructure一开始没有被添加为引用,所以必须强制重新安装。

0
在我的情况下,应用程序池属性中的.NET CRL版本设置为无托管代码(不知道为什么)。 将其设置为.NET CRL版本v4.0.30319解决了问题。

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