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

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


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

错误信息

模块DirectoryListingModule

通知ExecuteRequestHandler

处理程序StaticFile错误

请求的代码0x00000000

URL 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的已安装功能。



评论

好的,我有一个类似的问题,它仅在ASP.NET MVC 3网站上显示。 ASP.NET MVC 2网站可以正常工作。我在网站的根目录中放置了一个Default.aspx文件,它被选中了,没问题。我已经使用VS2010 SP1对ASP.NET MVC 3网站进行了bin-deploy,但仍然无法实现。我为此无能为力。

我遇到同样的问题。我已将应用程序设置为使用4.0集成,运行了注册命令以向IIS(7.5)注册.NET,仍然出现此错误。

我终于能够在设置中找到问题,那就是我已经将文件_Layout.cshtml重命名为_PageLayout.cshtml并在_ViewStart.cshtml中进行了相应的更改,但是显然这还不够。将名称恢复为_Layout.cshtml后,它便开始工作。令人困惑的是_PageLayout.cshtml是在Win7 32位上正确拾取的,但在Win7 64位或WinSvr2K8 R2上却没有拾取。

有人在带有IIS 8的Windows 8上找到解决方案吗?

如果您使用的是Windows Server 2012或Windows 8,请参见:[stackoverflow.com/questions/12134713/…[1]:stackoverflow.com/questions/12134713/…

#1 楼

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

32bit(x86)Windows


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


64位(x64)Windows


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


戴维·默多克(David Murdoch)的注释的注释:


自发布此答案以来,.net版本已更改
。在运行之前检查%windir%\ Microsoft.NET \ Framework64
(当前为
v4.0.30319)


评论


注意用于64位Windows的Framework64中的“ 64”!在* ss中咬住了我。我必须将32位版本4或5次安装都没有效果。

– Ben Lesh
2011年1月4日15:31

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

–大卫·默多克(David Murdoch)
2011年4月21日在20:22



添加到@blesh,如果您有64位并运行32位aspnet_regiis.exe,则可能只是向您显示选项而无任何操作

–xster
2012年5月2日在20:28

如果.net framework文件夹中缺少aspnet_regiis.exe命令,请下载完整的.net framework安装程序microsoft.com/download/en/…

– warrickh
2012年7月11日14:39



如果您尝试获取“在此版本的操作系统上不支持此选项,则在IIS8 btw中不起作用。管理员应改为使用“打开/关闭Windows功能”来使用IIS8安装/卸载ASP.NET 4.5。对话框,服务器管理器管理工具或dism.exe命令行工具。有关更多详细信息,请访问go.microsoft.com/fwlink/?LinkID=216771。

–马斯特罗
2014年4月29日在1:53

#2 楼

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

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


评论


对我来说就做到了。谢谢

– Boca
2011年9月9日在19:54



也为我解决了。奇怪的是,没有该设置,它就可以在VS2010 IIS Express中本地工作。

–菲尔
11年10月10日在11:11

如果您不想设置runAllManagedModulesForAllRequests(甚至对于静态文件也可以运行),则可以安装Microsoft修补程序:microsoft.com/download/en/…。

–贾斯汀·赫尔格森(Justin Helgerson)
2012年4月17日在16:17

尝试通过添加路由模块来避免这种情况:britishdeveloper.co.uk/2010/06/…

–克里斯·赫林(Chris Herring)
2013年5月10日下午3:40

如果您使用VS2013并尝试在IIS 7.5上运行-您需要添加此内容

– KenL
14年4月14日在15:48

#3 楼

确保在web.config中具有以下设置:

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


更好的解决方案:

即使以上解决方案都可以正常工作,它可能会导致其他问题,因为它会在每个请求(甚至是.jpg .gif .css .html .pdf等的每个请求)上运行所有已注册的HTTP模块,并且显然浪费资源。而是

<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,“阅读原始帖子”)

评论


这将403.14固定在根上,并将404固定在我的MVC应用程序的其他控制器方法上。但是,这里仍然有些麻烦,因为我在同一服务器上运行了另一个具有相同可见站点设置的应用程序,并且在没有此设置的情况下也可以运行。这是由VS 2012提供的SPA项目模板创建的web.config,可以在我的盒子上正常工作,但发布时不行。

–香农
13年30月30日下午3:28

是的,因此我的开发设备在Windows \ Microsoft.NET \ Framework64 \ v4中包含 。 0.30319 \ Config \ web.config,看起来在我安装VS 2012时已被修改。那么,下一个问题是,我的另一个项目中允许它运行的是什么?

–香农
13年11月30日在3:42



请注意,显然不是顶级解决方案建议的%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir来设置开发设备上必须存在的任何默认值。一旦删除UrlRoutingModule引用,该命令就无法为我解决问题。

–香农
13年11月30日,下午3:54

在适用于ASP.NET MVC 5的Windows Server 2008 R2 IIS 7上可以使用。谢谢!

– Ervi B
16 Mar 9 '16 at 20:32

#4 楼

导致此错误的另一个原因是文件Global.asax是否不再位于根文件夹中。

评论


是的-我编写的安装程序没有带来此文件。谢谢!

– zadam
2011年9月23日下午3:56

这也是我的问题。基于403症状,我从来没有猜过我的应用程序缺少Global.asax

– Saul Dolgin
2013年6月28日13:09



还为我修复了该问题:在发布选项中关闭了预编译(global.asax仅受文件影响)。

–理查德
14-10-15在12:58

这确实对我有用。事实是,对我来说,我也听到许多其他消息,每发布一次我就会发布global.asax。是否有人想出每次生成它的方法?

– GregZ。
15年5月19日在16:54



谢谢,解决了我的问题。应用程序在ASP.NET MVC 4.0,Framework 4.0上运行。托管在Arvixe上。

–乔·金
15年7月14日在9:16

#5 楼

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

评论


在所有该死的事情中,就是这样。我四处张望,用安全设置玩了几个小时,aspnet_regiis等等。在一个易碎的kaiser卷的甜小耶稣。

–安德鲁·贝克尔(Andrew Backer)
2012年5月7日16:55



我为此花了一整天。非常感谢。

– Pradeep
2012-09-15 18:57

对于Windows 8,启用HTTP重定向后仍然出现错误。必须做的第二步:在Internet信息服务->万维网服务->应用程序开发功能serverfault.com/questions/514091/…下添加ASP.NET 4.5角色

–dreamerkumar
15年9月2日在19:03

第二站解决了我的问题。有些机器在没有它的情况下工作,但是其他机器则是必不可少的。谢谢。

–亚历克西斯·海迈伊(Alexis Heijmeijer)
17年5月24日在19:20

#6 楼

甜心的耶稣。我尝试了上述所有操作(但发现我的设置相同)。如果遇到问题,请使用另一个解决方案:

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

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

评论


在运行Server 2008 SP2(不是R2)的32位服务器上为我解决了

–西蒙C
2014年3月27日下午4:40

#7 楼

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

#8 楼

对于我来说,在具有Asp.Net MVC 5应用程序(已部署MVC 5的Bin)的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

现在我的应用正在运行。

评论


“ dism”对我有用(不应用任何其他建议的更改)。我只需要将'/ all'开关切换到末尾,以确保也安装了所有'parent'功能。

– Jeroen Ritmeijer
16年6月8日在17:45

这对我有用。在Windows Server 2012上运行带有.NET 4.5的MVC5。默认情况下,IIS无法安装.NET 4.5。

– DPac
16 Dec 9'在21:41

#9 楼

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

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

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

评论


什么是服务器管理器?我在哪里找到它?

– Elad Katz
2015年3月1日,9:12

服务器管理器位于管理工具中

– udog
15年6月19日在20:37

#10 楼

另外,如果您的应用程序已预编译,则应在应用程序的根文件夹中具有

PrecompiledApp.config

,否则也可能会得到HTTP Error 403.14

评论


尽管我的应用程序未预编译,但由于某种原因我在那里保存了文件。删除了文件,现在可以使用了。谢谢!

–vaindil
16年2月8日在16:59

如果在花费2个小时并自己解决问题之前看到此答案,我将非常高兴。

–sotn
17年1月14日在11:39

#11 楼

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

#12 楼

我曾使用WebDeploy IIS Extension将网站从IIS6导入IIS7.5,所以所有IIS设置都与生产环境中的设置完全相同。在尝试了这里提供的所有解决方案之后,我都没有解决任何问题,我只需要将网站的“应用程序池”设置从“经典”更改为“集成”。

#13 楼

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

评论


同样在这里。直到今天发布才成为问题-取消选中即可解决。反正很奇怪

–鲁佛爵士
16年5月9日在15:53

#14 楼

我在以下位置更改了默认路线:

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" }


哪个给了我您的错误。很高兴有人提到路由,因为我可能永远都会这样做。

#15 楼

在我的情况下,服务器上未安装ASP.NET 4.5,因此安装ASP.NET 4.5可以解决此问题。

#16 楼

您可以通过以管理员身份运行cmd来解决此错误,而不是


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

将64位作为framework64而不是仅使用Framework
比去iis刷新站点
如果仍然有错误,请在应用程序池中进行更改

#17 楼

我还有另一个导致此问题的问题。


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

这些都不起作用。原来,在system.systemserver>模块下的web.config中,我有以下内容:

<remove name="WindowsAuthentication" />


显然,这删除了Windows身份验证模块,该模块似乎以某种方式敲了敲门所有东西

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

#18 楼

看起来似乎很奇怪,重新安装IIS对我而言却行之有效,在.net版本文件夹中运行以下命令:

aspnet_regiis.exe /i




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

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

评论


仅供参考aspnet_regiis.exe不会安装或重新安装IIS,它只是注册特定的.NET框架版本,因此IIS可以使用它来托管应用程序。

–斯蒂芬
2015年10月5日17:41

#19 楼

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



#20 楼

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

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

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

我以前在MVC2项目中完成了这些操作,但效果很好,但是在我的MVC 3应用程序中执行此操作导致了上面报告的问题。

#21 楼

发生这种情况的另一个原因-您的RouteConfig.csWebApiConfig.cs无效。

在我的情况下,我有一条这样定义的路由(请注意括号而不是大括号):

...
routeTemplate: "api/(something}"
...


评论


这个对我有用!如果更改了route.MapRoute(name:“ Default”,url:“ {controller} / {action} / {repositoryId}”,则默认值:new {controller =“ Account”,action =“ Login”,id = UrlParameter。可选的 } );。当我固定id = UrlParameter.repositoryId = UrlParameter.Optional时,它开始工作!

–德米特里斯基
2014年10月1日,0:11

#22 楼

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

#23 楼

要解决此问题而不必求助于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

#24 楼

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

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



#25 楼

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

#26 楼

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

#27 楼

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

必须强制重新安装基础结构,因为它没有作为基础添加首先参考。

#28 楼

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