HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出内容
Posted
技术标签:
【中文标题】HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出内容【英文标题】:HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents 【发布时间】:2013-07-11 22:59:44 【问题描述】:我已经在位置 C:\Users\DEVESH\Desktop\Projects\MvcMusicStore-v3.0\MvcMusicStore-Completed\MvcMusicStore 下载了 MVC Music Store ASP.NET 应用程序 并在 IIS 上将网站添加到同一位置。我也授予了 IIS_IUSRS 的权限,但是当我运行 localhost 时出现错误:
HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出此目录的内容。
我用谷歌搜索了它,但没有找到解决方法。我做错了什么?
【问题讨论】:
相关帖子 - HTTP Error 403.14 - Forbidden - The Web server is configured to not list the contents of this directory 【参考方案1】:我遇到此错误是因为我在网站应用程序池中配置了错误的 .NET 版本(v2.0 而不是 v4.0)。我在 Windows Server 2008 R2 和 IIS 7 上以这种方式修复了它。我很确定这些说明也适用于 Windows Server 2012 和 IIS 8:
按 Windows+R 键打开“运行”对话框,键入 inetmgr,然后单击“确定”。这将打开 IIS 管理器。 在左侧树形视图中,找到 Sites 节点并在其下找到 Default Web Site 节点(或出现错误消息的站点名称)。 右键单击节点并选择管理网站 -> 高级设置...。请注意值 Application pool 的名称。关闭此对话框。 在左侧的树视图中,找到并选择节点Application pools。 在右侧列表中,找到与您在网站设置中记下的名称相同的应用程序池。右键单击它并选择高级设置... 确保 .NET Framework 版本 值为 v4.0。点击确定。当然,如果您运行的是一个实际上应该有 .NET v2.0 的旧网站,这并不适用:)
【讨论】:
.NET Framework 版本值更改为 v4.0,默认情况下为 2.0。它有效,太好了! 勾选此项也启用 IIS 中的目录浏览功能support.microsoft.com/en-us/kb/942062 @BinoMathewVarghese 这怎么行?您正在启用目录浏览。它列出了文件。不显示实际网站。 我没有“inetmgr”。 @AndrewKoster 我目前的 W10 安装中也没有,看来您需要激活它:***.com/questions/30901434/iis-manager-in-windows-10【参考方案2】:在我的例子中,ASP.NET 没有在服务器上注册。尝试在命令提示符下执行:
Windows 32 位
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir
Windows 64 位
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
【讨论】:
在我的情况下运行此命令会返回“此版本的操作系统不支持此选项。管理员应该使用“打开/关闭 Windows 功能”对话框来安装/卸载带有 IIS8 的 ASP.NET 4.5 我使用“打开/关闭 Windows 功能”来添加 Internet 信息服务 - 万维网服务 - 应用程序开发功能 - ASP .NET 4.7,它可以工作!不错:) 当您安装了 .NET 4.5+(在撰写本文时为当前版本)然后追溯安装早于 .NET 的 IIS 版本时,您很可能会遇到这种情况(就像我刚才所做的那样) 4.5,就像在“打开或关闭 Windows 功能”下在 Windows 7 上免费提供的 IIS 7(在撰写本文时有些过时)。 如果您在 Windows 服务器操作系统上尝试此操作,您需要使用服务器管理器 --> 管理 --> 添加角色和功能,然后按照向导选择 Web 服务器 (IIS) --> Web 服务器 --> 应用程序开发 --> ASP.NET 4.5 对于那些有@LukášKmoch 问题的人,需要安装.net 4.5。这篇文章对我有用docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/…【参考方案3】:以防万一有人到这里寻找解决方案,这就是我解决它的方法。我错误地从我的服务器( bin 目录)中删除了所有文件,但是当我重新复制所有文件时,我错过了 App_global.asax.dll 和 App_global.asax.compiled 文件。因为这些文件丢失了 IIS 给了我这个错误
403 - Forbidden: Access is denied.
我添加了这些文件后,它就开始正常工作了。
【讨论】:
【参考方案4】:我通过更正 Global.asax 文件排列的错误解决了这个问题。我从另一个项目复制了文件,但未能将 Global.asax.cs 嵌入 Global.asax 文件中(这两个文件以前存在于同一级别)。
【讨论】:
这种“嵌入”自然发生,无需您做任何事情。如果您查看磁盘上的文件,您会发现它们位于同一个文件夹中。【参考方案5】:我在 IIS 7 上使用 ASP.NET 4.5 MVC 应用程序。我的解决方法是将 runallmanagedmodule 设置为 true。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
或者如果您有其他模块,您可能需要将它们添加到模块标签内。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLogWeb" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
...
</modules>
</system.webServer>
IIS Modules Overview : The Official Microsoft IIS Site
【讨论】:
【参考方案6】:我以前也遇到过类似的情况,原因有两个; 1、没有安装MVC。 2. url 路由模块未注册(这取决于我工作场所的机器,原因我无法完全解释 - 它并不总是在系统级别注册),尝试在应用程序 web.config 中注册它:
<system.web>
...
<httpModules>
...
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
编辑:我忘记为 iis 7+ 添加位置:
<system.webServer>
<modules>
...
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
</system.webServer>
【讨论】:
【参考方案7】:当 IIS 管理器中的 ASP.NET MVC 站点指向错误的目录时,可能会发生此错误。
就我而言,我无意中将站点指向了解决方案目录,而不是子项目目录。也就是说,我将网站的Physical path
设置为
C:\dev\MySolution
而不是
C:\dev\MySolution\MyProject
.
解决此问题的具体步骤:
-
打开 IIS 管理器(开始 > 运行 > inetmgr);
在 IIS 管理器的左窗格中,展开站点;
在站点下,左键单击 ASP.NET MVC 网站;
在右侧窗格中,单击基本设置...;
在“编辑站点”对话框中,将
Physical path
更改为项目目录。
点击确定。
【讨论】:
【参考方案8】:就我而言,当我浏览到 网站5.com 我收到以下错误。
HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出此目录的内容。
最可能的原因: 请求的 URL 没有配置默认文档,并且服务器上没有启用目录浏览。
然后当我浏览到
site5.com/home/index
我遇到了
HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。
最可能的原因: 指定的目录或文件在 Web 服务器上不存在。 URL 包含印刷错误。 自定义过滤器或模块(例如 URLScan)限制对文件的访问。
我所做的只是在 IIS ASP.NET 4.8 中安装了该功能,如下所示。
【讨论】:
【参考方案9】:我刚刚遇到了同样的问题,但我的解决方法是在 Global.asax.cs 文件中没有配置路由。我正在使用 Bootstrapper 和 Castle Windsor,所以为了解决这个问题,我将以下代码添加到 Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication
protected void Application_Start()
Bootstrapper.IncludingOnly.Assembly(Assembly.GetAssembly(typeof(WindsorRegistration)))
.With
.Windsor()
.With
.StartupTasks()
.Start();
显然,如果您使用的是基本 MVC,那么您将需要引用 AppStart 文件夹中的 RouteConfig 文件:
public class MvcApplication : System.Web.HttpApplication
protected void Application_Start()
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
【讨论】:
【参考方案10】:就我而言,我有多个项目,但我没有定义起始项目。 所以这个错误正在产生。 定义启动项目后解决了这个问题。
【讨论】:
【参考方案11】:当应用程序无法启动时会出现此错误。 因此,原因可能是阻止您的应用程序启动的任何原因。
错误的连接字符串 IIS 目录权限错误 Application_Start() 函数中引发异常 IOC 容器初始化错误 IIS ASP.NET 注册错误 您的 bin 文件夹中缺少 DLL 等等……【讨论】:
【参考方案12】:在 Visual Studio 中创建一个空的 ASP.Net 应用程序后,我遇到了这个错误。一旦我将文件 index.html 添加到主要解决方案中,它就起作用了。所以在我的情况下,我只需要在项目文件夹的根目录中添加一个文件。
【讨论】:
【参考方案13】:也检查一下:
出现此问题的原因是该网站没有启用目录浏览功能,并且未配置默认文档。要解决此问题,请使用以下方法之一:
方法一:在 IIS 中启用目录浏览功能(推荐) 方法二:添加默认文档方法 方法 3:在 IIS Express 中启用目录浏览功能链接:https://support.microsoft.com/en-us/kb/942062
【讨论】:
你是对的。对不起。我投了反对票,因为用户已经下载并正在尝试部署应用程序。允许用户浏览构成应用程序的文件是没有意义的。事实上,用户浏览网站的文件夹和文件很少是一件好事。所以......用户真的试图让应用程序工作,不允许任何人浏览文件夹结构。 这是对上述问题的某种解决方案。和windows推荐的一样。我对我的项目尝试了上述解决方案并工作了,可能是不同的场景,但该解决方案将有助于解决错误。【参考方案14】:我遇到了类似(但不相同)的问题。
我必须前往控制面板中的打开或关闭 Windows 功能并添加 ASP.NET 3.5 和 4.7:
然后它对我有用。
【讨论】:
【参考方案15】:如果项目是一个 ASP.net MVC 项目,它将是关于路由的。 就我而言,我更改了默认路由值:
routes.MapRoute(
"Default",
"controller/action/id",
new controller = "Home", action = "Index", id = ""
);
我不小心把我的代码改成了:
routes.MapRoute(
"Default",
"controller/action/JobID",
new controller = "Home", action = "Index", id = ""
);
那是我只把“id”改成了“JobId”,找不到默认路由。
【讨论】:
【参考方案16】:在我的情况下 index.aspx 文件不是默认创建的,在添加另一个 Web 表单后,我没有将表单设置为起始页...在将页面设置为起始页后,我的问题得到解决。 所以右键单击一个 Web 表单并将该表单设置为起始页 :)
【讨论】:
【参考方案17】:IUSR permissions
如果不在 inetpub/wwwroot 下,则在文件夹上使用将是一些解决方案。
【讨论】:
【参考方案18】:就我而言,我必须在我的发布配置文件中禁用“从 App_Data 文件夹中排除文件”才能使用我的 XML 文档 (XmlDocument.xml) 部署 App_Data 文件夹。这摆脱了 403.14。
【讨论】:
【参考方案19】:就我而言: 1. 在 IIS 管理器中,在左侧树中,左键单击计算机名称,在右侧对话框中单击 ISAPI 和 CGT 限制,在打开的对话框中,选择 ASP.NET v4.0.30319 并选择启用。有两个 ASP.Net v4.0,一个用于 32 位,另一个用于 64 位。根据您的操作系统位选择。 2. 在左侧树中选择应用程序池,在右侧对话框中,选择您的网站使用的应用程序池。双击该池,在打开的对话框中,.net 框架项目选择 .net framework v.4.0.30319。和管道..项目选择集成。 可能上面翻译有误,因为我的操作系统不是英文版。
【讨论】:
【参考方案20】:如果有人在 MVC 以外的项目中遇到此问题:
我的项目是一个 WCF 项目,它运行 .svc
文件--没有默认文档。结果,我在myhost.com/
收到了一个 403.14 错误,但只要我从我的 web.config 文件中添加了一个baseAddress
路径(例如myhost.com/mybaseaddresspath.svc
,我就有了一个网页。
【讨论】:
【参考方案21】:我的同事做了一个URL Rewrite rule,它把所有的URLs减少到一个StaticFileHandler;映射到我的应用程序物理文件夹根目录的文件路径。
(即过度激进的 URL 重写意味着我的控制器/操作不起作用)
检查您的应用程序的 URL 重写规则,以确认它们符合您的预期。
【讨论】:
【参考方案22】:我遇到了类似的问题。我的控制器名称是文档。它管理上传的文档。它工作正常,并在代码完成后开始显示此错误。我犯的错误是 - 创建了一个文件夹“文档”来保存上传的文件。所以控制器名称和文件夹名称相同 - 这就是问题所在。
【讨论】:
以上是关于HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出内容的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出此目录的内容
HTTP 错误 403.14 - 禁止。 ASP.NET MVC