【问题标题】:HTTP Error 403.14 - Forbidden The Web server is configured to not list the contentsHTTP 错误 403.14 - 禁止 Web 服务器配置为不列出内容
【发布时间】: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 服务器配置为不列出此目录的内容。

我用谷歌搜索了它,但没有找到解决方法。我做错了什么?

【问题讨论】:

标签: asp.net-mvc iis


【解决方案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 的旧网站,这并不适用:)

【讨论】:

【解决方案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.

        解决此问题的具体步骤:

        1. 打开 IIS 管理器(开始 > 运行 > inetmgr);
        2. 在 IIS 管理器的左窗格中,展开站点;
        3. 在站点下,左键单击 ASP.NET MVC 网站;
        4. 在右侧窗格中,单击基本设置...;
        5. 在“编辑站点”对话框中,将Physical path 更改为项目目录。
        6. 点击确定。

        【讨论】:

          【解决方案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】:

                                    我遇到了类似的问题。我的控制器名称是文档。它管理上传的文档。它工作正常,并在代码完成后开始显示此错误。我犯的错误是 - 创建了一个文件夹“文档”来保存上传的文件。所以控制器名称和文件夹名称相同 - 这就是问题所在。

                                    【讨论】:

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