【问题标题】:HTTP Error 403.14 - Forbidden - The Web server is configured to not list the contents of this directoryHTTP 错误 403.14 - 禁止 - Web 服务器配置为不列出此目录的内容
【发布时间】:2013-09-24 12:03:20
【问题描述】:

我刚刚在 Visual Studio 2012 中创建了一个新的空网站并点击了运行(即在浏览器中查看),我得到了这个错误:

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

我进入 IIS 并单击目录浏览,然后确保启用了目录浏览,但我仍然收到此错误。想不通?

我刚刚创建的网站项目没有列在 IIS 管理器的默认网站中,我认为这很奇怪。

我该如何摆脱这个错误?

【问题讨论】:

  • 项目是否配置为使用 IIS?还是 IIS Express?还是赌场?
  • 您是运行还是在浏览器中查看? 2个不同的东西。如果这是一个 MVC 项目,那么您可能曾尝试在浏览器中查看 view
  • 请确保您已从 控制面板\所有控制面板项\程序和功能\打开 Windows 功能或启用 ASP.NET 4.5 或 ASP.NET关闭\Internet 信息服务\万维网服务\应用程序开发功能\ASP.NET 4.5 或 ASP.NET 3.5,具体取决于您的应用程序池设置。

标签: asp.net iis


【解决方案1】:

将此保存到您的网络配置文件中,然后重命名 add value="yourwebformname.aspx"

<system.webServer>
    <defaultDocument>
       <files>
          <add value="insertion.aspx" />
       </files>
    </defaultDocument>
    <directoryBrowse enabled="false" />
</system.webServer>

其他

<system.webServer>
    <directoryBrowse enabled="true" />
</system.webServer>

【讨论】:

  • 我已经在这个项目上工作了几个月——从来不需要这条线。我今天发布了该网站,它不再在调试中运行!!!添加此行使其再次工作!我检查了 SVN - 以前绝对不需要它。哇!?无论如何,谢谢,只浪费了一个小时:)
  • 我收到 HTTP 错误 500.22 - 内部服务器错误。
  • 这只是浪费我的时间。是的,肯定会加载 aspx 页面,但是当它无法访问我的应用程序时,这对我有什么好处?
  • 先生...您拯救了我的一天!谢谢,这条线解决了我的问题!
  • 它一直在工作,直到我更改了 web.config.. 所以出现了问题。将 web.config 更改回原始版本,但无济于事。添加了建议的选项作品..
【解决方案2】:

出现此问题的原因是该网站没有启用Directory Browsing 功能,并且未配置默认文档。若要解决此问题,请使用下列方法之一。为了解决这个问题,我按照MS Support page 中提到的方法 1 中的步骤及其推荐的方法进行操作。

方法一:在 IIS 中启用目录浏览功能(推荐)

  1. 启动 IIS 管理器。为此,请单击开始,单击运行,键入 inetmgr.exe,然后单击确定。

  2. 在 IIS 管理器中,展开服务器名称,展开网站,然后单击要修改的网站。

  3. 在功能视图中,双击目录浏览。

  4. 在“操作”窗格中,单击“启用”。

如果这不起作用,您可能会遇到与目录列表问题不同的问题。所以按照下面的步骤,

方法二:添加默认文档

要解决此问题,请按以下步骤操作:

  • 启动 IIS 管理器。为此,请单击“开始”,单击“运行”,键入 inetmgr.exe,然后单击“确定”。
  • 在 IIS 管理器中,展开服务器名称,展开网站,然后单击要修改的网站。
  • 在功能视图中,双击默认文档。
  • 在“操作”窗格中,单击“启用”。
  • 在“文件名”框中,键入默认文档的名称,然后单击“确定”。

方法 3:在 IIS Express 中启用目录浏览功能

注意此方法适用于在使用 IIS Express 时遇到问题的 Web 开发人员。

按照以下步骤操作:

  • 打开命令提示符,然后转到计算机上的 IIS Express 文件夹。 例如,在命令提示符下转到以下文件夹: C:\Program Files\IIS Express

  • 键入以下命令,然后按 Enter:

    appcmd set config /section:system.webServer/directoryBrowse /enabled:true

【讨论】:

  • 这应该是被接受的答案。方法2对我有用。最初我创建了一个空网站,然后添加了一个名为“WebForm1.aspx”的网络表单。因此,我需要在默认文档列表中添加该名称。谢谢。
【解决方案3】:

转到 cmd 并输入:

对于 x64 操作系统: %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

对于 x32 操作系统: %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir

这将安装正确的版本,IIS 将理解 MVC 目录浏览

【讨论】:

  • %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir 这适用于我的 64 位系统和 MVC 应用程序
  • x64 的命令也为我解决了我的 asmx Web 服务中出现的问题
【解决方案4】:

问题可能有多种原因。在 IIS 8.5 上为我工作的一个如下

步骤

  1. 在搜索中输入“打开或关闭 Windows 功能”。
  2. 在服务器管理器中单击“添加角色和功能”。
  3. 在向导中向下滚动到 Web 服务器并选择:Web 服务器 -> 应用程序开发。从列表中选择除 CGI 之外的所有内容,如屏幕截图所示

  1. 最后点击下一步并安装。
  2. 重启 IIS

您的网站可能会开始工作。

【讨论】:

  • 这节省了很多时间!非常感谢!
【解决方案5】:

我刚刚将这段代码 sn-p 粘贴到 web.config 文件中,错误已解决。

<system.webServer>
    <directoryBrowse enabled="true" />
</system.webServer>

【讨论】:

  • 仅供参考 - 这可能不是您在本地计算机以外的任何其他服务器上想要的。
【解决方案6】:

设置起始页。

当我遇到这个问题时,我进入解决方案资源管理器,找到我想首先查看的页面(在我的例子中是“Home.aspx”),右键单击它并选择“设置为起始页”。这解决了我的问题问题(听起来和你的很相似)。这是在 Visual Studio 2012 Professional 中,我在 Firefox 中运行它。

【讨论】:

    【解决方案7】:

    尝试将以下设置添加到web.config 文件中。

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

    【讨论】:

    • HTTP 错误 500.22 - 内部服务器错误
    • 在 webconfig 文件中添加此代码后,我的问题已解决,谢谢。
    【解决方案8】:

    控制面板 > 打开或关闭 Windows 功能

    Internet 信息服务 > 万维网服务 > 应用程序开发功能

    启用这两个选项

    .NET 可扩展性 3.5
    .ASP.NET 3.5

    【讨论】:

      【解决方案9】:

      我有一个快速的补救措施。事实上,我收到此错误是因为我没有将我的网页设置为起始页。当我将我的网页(html /aspx)设置为如下所示的起始页时,我得到了纠正这个错误。

      我不知道这个解决方案是否对其他人有帮助。

      【讨论】:

        【解决方案10】:

        空网站模板创建一个包含 Web.config 文件但不包含其他文件的 ASP.NET 网站。意味着您没有任何默认页面可在浏览或运行时显示。

        此错误消息仅表示您没有在 IIS 上正确设置和配置默认文档。

        配置完成后,错误消息就会消失。

        【讨论】:

        • 我确实向空网站添加了一个母版页,当我单击运行时没有代码时仍然出现错误。我不确定我需要做什么才能让它运行?
        • 如果没有,您的网站是否有默认页面,然后创建并设置默认页面,如此链接所示iis.net/learn/web-hosting/web-server-for-shared-hosting/…
        • 不,我在空网站中没有默认页面。我正在关注 C# 书中的一个示例。我添加了一个默认页面,该页面将在 Web 浏览器中正常加载。但该示例仅使用母版页。我不明白为什么它不起作用。这是一个非常简单的例子。
        【解决方案11】:

        在 IIS 中的站点上:

        1. 选择“高级设置”
        2. 然后为应用程序池选择“ASP.NET v4.0”

        【讨论】:

        • 这不能回答 OP 的问题。更改 IIS 中站点使用的应用程序池不会影响站点如何配置为列出目录内容(或不列出它们)。这与 web.config 文件中的配置有关。
        【解决方案12】:

        我用这个步骤解决了我的问题 =>

        1. 打开 IIS 管理器
        2. 点击应用程序
        3. 点击目录浏览
        4. 点击打开功能(您将在右侧的操作下看到)
        5. 点击启用

        【讨论】:

          【解决方案13】:

          问题

          从 Visual Studio 运行 WebForms ASP.Net 网站时出现错误:403.13。

          解决方案

          拒绝访问根目录:http://localhost:51365

          导航到登录页面或任何存在的页面,它将起作用:

          http://localhost:51365/Login.aspx

          【讨论】:

            【解决方案14】:

            就我而言,我在创建一个空的 Web Api 项目后收到了同样的错误。

            我通过编辑 App_Start 文件夹中的 RouteConfig.cs 解决了这个问题:)

            我替换了那行代码阅读:-

            defaults: new { action = "Index", id = UrlParameter.Optional }

            使用以下内容:-

            defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional }

            请注意,我只需指定要首先调用其索引操作的控制器。

            以上所有回复都没有解决我的问题(如我所愿) 例如

            • web.config 启用目录浏览只是列出了我的项目中的所有文件和文件夹,就像没有索引文件时 php 会做的那样
            • 设置 defaultDocument 对我也不起作用,但仍然出现 HTTP 错误 403.14(仍然不知道为什么)

            如果有人和我的情况相似,那就试试吧。

            【讨论】:

            • 这是我需要的大部分答案。但是,控制器名称必须与为 MVC 应用程序控制器名称创建的名称相匹配(如果您调用控制器 IndexController,那么它将起作用)-因此控制器上的默认操作名称应该是 Index,然后它们都被捆绑在一起-建议在我看来,使用目录浏览并不是一个好主意,因为它允许任何人浏览您的整个网站内容。
            【解决方案15】:

            我收到此错误并将应用程序池管理管道模式更改为“集成”解决了问题。

            来源:Running a .NET 4.6 MVC application on IIS 8.5 (Windows Server 2012)

            【讨论】:

            • 那篇文章实际上并没有回答这个问题,因为它与其他方式类似。
            【解决方案16】:

            就我而言,我遇到了这个错误,因为我的 webapp 是 .NET v4,并且应用程序池是为 .NET v2 配置的。

            双击应用程序池会弹出一个窗口,我们可以在其中选择所需的 .NET Framework 版本。

            【讨论】:

              【解决方案17】:

              已解决
              在开始时搜索 "Windows Feature" ->
              单击 "turn features on and off" ->
              展开 "Internet Information Services"
              检查每个子文件夹中的每个程序,然后
              单击“确定”
              这将解决您的所有问题。

              【讨论】:

                【解决方案18】:

                这可能是由一个 bum applicationhost.config 条目引起的。

                如果 IIS Express 正在运行,请停止它(右键单击 Windows 系统托盘中的浅蓝色滚动图标;退出)。

                转到项目的属性 > Web,并检查项目 URL 是否正确。如果是 https url,请确保它包含有效范围内的端口号。正确的 URL 可能是:https://localhost:44300/。现在按 URL 旁边的“创建虚拟目录”按钮。这会在 applicationhost.config 中添加一个新条目。

                再次启动项目,希望您不会再收到错误消息。

                【讨论】:

                  【解决方案19】:

                  我敢肯定,多年后您可能已经有了答案。但万一其他人在未来寻找答案。

                  对于我的问题,我不需要对 web.config 做任何事情。我认为我也不需要,因为它以前可以工作。

                  确保没有文件夹与您的页面命名相同,我有一个名为“blog”的文件夹和一个名为“blog.aspx”的页面,它正在尝试加载该文件夹,我在链接中注意到了这一点,更改了文件夹到 blogContent,现在可以正常加载了。

                  我在这里发布一份副本,因为您是搜索查询中的第一个。

                  【讨论】:

                    【解决方案20】:

                    问题可能来自于从 IIS 上的 Visual Studio 运行项目,同时在 Visual Studio 上打开了错误的选项卡,因此解决方案是打开正确的选项卡(您要在浏览器上测试的 Web 表单)或打开其他选项卡在其他答案中建议,右键单击要设置为主页的网络表单,然后单击“设置为起始页”。

                    【讨论】:

                      【解决方案21】:

                      就我而言,我错过了Microsoft.Owin.Host.SystemWeb nuget。

                      【讨论】:

                        【解决方案22】:

                        在解决方案资源管理器中右键单击您的项目,然后单击添加新项目,添加一个 HTML 页面并将其命名为 index.HTML,然后重新运行您的应用程序

                        【讨论】:

                          【解决方案23】:

                          就我而言

                          在应用程序池中,我将 .NetFrameWork 版本设置为 V4.0 并解决了问题 ....

                          【讨论】:

                            【解决方案24】:

                            您应该在您的服务器上安装 IIS 的应用程序开发部分,如图所示:

                            【讨论】:

                              【解决方案25】:

                              这可能由于多种原因而发生。如果您已经尝试了以上所有方法,但仍然遇到相同的错误,我还有一个解决方案。

                              发生这种情况的另一个原因是

                              1. 如果在开始运行新解决方案之前运行了相同的代码库,则可能会遇到此错误。原因是 IIS Express 试图在与旧解决方案相同的端口上运行,旧解决方案为应用程序启动 URL 注册了物理路径。
                              2. 由于 IIS 无法确定运行解决方案的物理路径,它可能无法找到启动应用程序所需的所有 dll。

                              解决方案:

                              1. 尝试将应用程序端口更改为默认值。例如。, 使用http://localhost/ 而不是http://localhost:25836/

                              2. 如果您已经为之前的应用程序使用了默认端口,请尝试更改为任何其他端口。例如:http://localhost:25364/ 而不是 http://localhost/

                              这将允许 IIS/IIS Express 指向您尝试运行的较新应用程序的默认 bin 路径,该路径将包含启动应用程序所需的所有 dll。

                              【讨论】:

                                【解决方案26】:

                                我用 Visual Studio 2019 打开一个旧的 Asp.net webform (.Net Framework4.5) 解决方案,也有同样的问题。解决方案很简单,转到 web 项目的属性-> Web-> 选中“覆盖应用程序根 URL”-> 分配另一个端口号。保存解决方案并再次以调试模式运行。问题已解决。

                                【讨论】:

                                  【解决方案27】:

                                  所以这意味着服务器无法处理您所做的事情。 (如果你想使用索引有点事情忽略这个答案)

                                  例如,如果您在 windows iis 上安装 WordPress,则服务器应该能够运行 .php 文件。

                                  否则你会遇到这些问题。因此,如果是 WordPress,您可以通过使用 iis manager -> web 平台安装程序在该服务器上安装 PHP 来解决该问题。

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2016-06-09
                                    • 2015-02-05
                                    • 1970-01-01
                                    • 2013-07-11
                                    • 2022-12-13
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多