339

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

但是,每次我尝试运行 MVC 应用程序时,都会收到以下错误:

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

错误信息

模块目录ListingModule

通知 ExecuteRequestHandler

处理程序静态文件错误

请求代码 0x00000000

网址 http://localhost:80/mySite/

物理路径 C:\myProject\mySite\

登录方式 匿名登录

匿名用户

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

HTTP 错误 500.21 - 内部服务器错误处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

我是否忘记采取任何其他步骤来使其正常工作?

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

以下是我已安装的 IIS 功能。

替代文字

4

28 回答 28

499

ASP.NET 4 未在 IIS 中注册。必须在命令行/运行中运行以下命令

32 位 (x86) 视窗

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir

64 位 (x64) 视窗

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

大卫默多克评论中的注释:

自发布此答案以来,.net 版本已更改。检查 %windir%\Microsoft.NET\Framework64 目录中的框架版本,并在运行前相应更改命令(当前为 v4.0.30319)

于 2010-03-04T02:20:42.613 回答
199

要确保您拥有的另一件事是 web.config 中的以下设置:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>
于 2011-06-23T14:20:24.063 回答
77

确保您的 web.config 中有以下设置:

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

更好的解决方案:

尽管上述解决方案工作得很好,但它可能会导致其他问题,因为它会在每个请求上运行所有已注册的 HTTP 模块(甚至在 .jpg .gif .css .html .pdf 等的每个请求上),这显然是资源浪费。反而

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0"/>
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>

确保 preCondition 属性为空意味着它将在所有请求上运行。[阅读更多](http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html,“阅读原文”)

于 2013-03-05T07:24:56.030 回答
42

有人可能会收到此错误的另一个原因是文件Global.asax不再位于根文件夹中。

于 2011-09-13T15:04:52.973 回答
20

我也收到此错误,并发现 Windows Server 中未打开“HTTP 重定向”。这篇博文也指出了这一点:http: //blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx

于 2011-10-21T15:24:11.447 回答
15

亲爱的耶稣。我尝试了上述所有方法(但发现我的设置相同)。如果您遇到问题,还有另一个解决方案:

http://support.microsoft.com/kb/980368

尝试为您的系统安装此 KB。如果您看到 404,可能是因为您没有此更新 - 并且找不到 isapi 模块,如果没有这个,您将无能为力!

于 2012-01-27T20:45:46.723 回答
7

您也可以将AppPool切换到集成模式。感谢 Michael Bianchi(https://stackoverflow.com/a/7956546/1143515),我只想强调这一点。

于 2012-01-11T15:35:42.947 回答
7

对于我在带有 Asp.Net MVC 5 应用程序(bin 部署 MVC 5)的 Azure Server 2012 R2 IIS 8.5 VM 上的我来说,即使我已经安装了 4.5,我也必须从提升的 cmd 提示符执行以下操作:

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

来源: http: //support.microsoft.com/kb/2736284

我还使用以下 PowerShell 蛮力安装了所有 IIS 功能:

import-module servermanager
add-windowsfeature web-server -includeallsubfeature

来源:http ://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2

现在我的应用程序正在运行。

于 2014-07-25T04:39:42.783 回答
6

我们将 MVC 应用程序移至新服务器。.NET 4 和 MVC 3 已安装,但我们仍然收到“错误 403.14”。在这种情况下,这意味着 IIS 不理解它正在处理 MVC 应用程序,它正在寻找默认页面。

解决方案很简单:服务器上没有安装 HTTP 重定向。

服务器管理器 – 角色 – Web 服务器 (IIS) – 角色服务 – HTTP 重定向:未安装。安装好了,问题解决了。

于 2013-03-04T11:01:40.047 回答
5

此外,如果您的应用程序是预编译的,您应该有

PrecompiledApp.config

在您的应用程序的根文件夹中,否则您也可以获得HTTP Error 403.14

于 2012-09-26T09:15:10.050 回答
4

另一种可能的解决方案是,如果您在 global.asax 中移动,请确保标记指向正确的 MvcApplication 类。希望这将在未来拯救某人。

于 2011-10-28T11:34:53.987 回答
4

我曾使用 WebDeploy IIS Extension 将我的网站从 IIS6 导入到 IIS7.5,因此所有 IIS 设置与它们在生产环境中的设置完全相同。在尝试了这里提供的所有解决方案后,没有一个对我有用,我只需将网站的 App Pool 设置从 Classic 更改为 Integrated。

于 2011-10-31T16:24:59.520 回答
4

我突然遇到了同样的 404.14 问题。最后,通过取消选中发布配置文件设置中的“发布时预编译”来解决问题。

于 2013-07-17T04:19:10.213 回答
4

我在某一时刻改变了我的默认路线:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

到:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index" }

这给了我你的错误。很高兴有人提到路由,因为我可能会一直在这个问题上。

于 2013-09-23T02:56:12.973 回答
4

在我的情况下,服务器上没有安装 ASP.NET 4.5,因此安装 ASP.NET 4.5 解决了这个问题。

于 2013-10-21T15:28:57.900 回答
4

您可以通过以管理员身份运行 cmd 来解决此错误 在此处输入图像描述

对 Windows 32 位执行与图片中相同的操作

只需将 64 位更改为 framework64 而不是仅使用 framework 比转到 iis 并刷新站点
如果您仍然遇到一些错误,请在应用程序池中进行更改

于 2015-05-06T11:17:55.973 回答
3

我有另一个问题导致了这个问题。

  • 我已确保我的应用程序池在集成模式下运行 .net 4
  • 我已经运行 aspnet_regiis.exe -i
  • 我已检查为运行我的应用程序池的帐户正确设置了文件夹权限

这些事情都没有奏效。事实证明,在我的 web.config 下 system.webserver > modules 我有以下内容:

<remove name="WindowsAuthentication" />

显然,这删除了 ​​Windows 身份验证模块,该模块似乎以某种方式将所有内容都打乱了。

我希望这对某人有所帮助,因为这花了我一个晚上的大部分时间!

于 2013-02-13T09:04:23.033 回答
3

较新版本的 Windows Server 中的 UI 略有不同。在这里您必须启用 ASP.Net 才能使其在 IIS 上运行

修复 IIS 和 Asp.net

于 2017-11-29T19:56:00.533 回答
2

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

在我的 Global.asax.cs 文件中,我使用以下命令禁用了尝试的 php 文件被 MVC 管道使用:

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

我以前在一个 MVC2 项目中做过这些,它工作得很好,但是在我的 MVC 3 应用程序中这样做会导致上面报告的问题。

于 2011-09-27T17:26:35.687 回答
2

这可能发生的另一个原因 - 您的RouteConfig.csorWebApiConfig.cs无效。

就我而言,我有一个这样定义的路线(注意括号而不是花括号):

...
routeTemplate: "api/(something}"
...
于 2013-07-24T15:23:33.027 回答
2

请注意,对于 Windows 8 用户,您需要添加/删除 Windows 组件并删除 .net 重新启动的版本,然后重新安装才能将其注册到 IIS。我认为如果您从 Visual Studio 获得 .net 4.5 并在之后安装 IIS,就会发生这种情况。

于 2013-08-07T10:02:55.890 回答
2

尽管看起来很奇怪,但重新安装 IIS对我来说很有效,从 .net 版本文件夹中运行以下命令:

aspnet_regiis.exe /i

在此处输入图像描述

当我第一次运行此命令时,我开始收到 HTTP 错误 403.14。但是一旦我再次运行该命令,它就解决了问题。

Obs:我还做的另一件事是在重新安装 IIS 之前从服务器管理屏幕的服务器功能中删除 HTTP 重定向。也许这对解决问题也有影响,但我不确定。因此,如果重新安装 IIS 仍然不起作用,请尝试删除 HTTP 重定向并重试。希望它也对你有用。

于 2015-06-29T14:18:10.673 回答
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 cloud codeplex 项目的讨论板上提出了这个问题作为讨论。

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

于 2011-06-20T12:28:59.500 回答
1

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

于 2014-04-29T02:20:46.717 回答
1

这对我有用,它可能对另一个人有用。

也许所需的所有组件都不存在或/并且并非所有组件都已正确注册。为了解决这个问题,请尝试取消选中控制面板中的所有选项 -> 打开或关闭 Windows 功能 -> Internet 信息服务 -> 万维网服务 -> 应用程序开发功能,取消选中所有选项并重新选中所有选项,然后重置 IIS 和检查问题是否已解决。

在此处输入图像描述

于 2015-08-07T16:31:55.217 回答
0

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

于 2015-04-15T07:35:20.447 回答
0

对我来说,解决方案是将 NuGet 包 Microsoft.AspNet.WebPages(加上它的 Razor 和基础结构依赖项)添加到我的 Web 项目中。

基础设施必须强制重新安装,因为它最初没有作为参考添加。

于 2016-08-31T21:29:23.177 回答
0

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

于 2016-11-30T15:12:23.043 回答