HTTP错误403.14 - 禁止Web服务器配置为不列出内容

时间:2013-07-13 14:42:51

标签: asp.net-mvc iis

我已经在位置C下载了MVC音乐商店ASP.NET应用程序:\ Users \ DEVESH \ Desktop \ Projects \ MvcMusicStore-v3.0 \ MvcMusicStore-Completed \ MvcMusicStore 并在同一位置的IIS上添加了网站。我也允许IIS_IUSRS,但是当我运行localhost时,我收到错误:

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

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

22 个答案:

答案 0 :(得分:43)

我遇到了这个错误,因为我在网站应用程序池上配置了错误的.NET版本(v2.0而不是v4.0)。我在Windows Server 2008 R2和IIS 7上以这种方式修复它。我非常确定这些说明也适用于Windows Server 2012和IIS 8:

  • Windows + R 键以打开“运行”对话框,键入 inetmgr ,然后单击“确定”。这将打开IIS管理器。
  • 在左侧树视图中,找到站点节点,然后在其下找到默认网站节点(或显示错误消息的站点的名称)。< / LI>
  • 右键点击该节点,然后选择管理网站 - &gt;高级设置...... 。请注意值应用程序池的名称。关闭此对话框。
  • 在左侧的树状视图中,找到并选择节点应用程序池
  • 在右侧列表中,找到与您在网站设置中记下的名称相同的应用程序池。右键单击它并选择高级设置...
  • 确保 .NET Framework版本值为 v4.0 。点击确定

如果你正在运行一个实际应该拥有.NET v2.0的旧网站,那么这不适用:)

答案 1 :(得分:16)

在我的情况下,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 

答案 2 :(得分:10)

如果有人到达这里寻找解决方案,以下是我如何解决它。我错误地删除了我的服务器(bin目录)中的所有文件,但当我重新复制所有文件时,我错过了App_global.asax.dll和App_global.asax.compiled文件。因为这些文件丢失了IIS给了我这个错误

403 - Forbidden: Access is denied.

一旦我添加了这些文件,它就开始正常工作了。

答案 3 :(得分:7)

我通过使用Global.asax文件排列更正错误来解决此问题。我复制了另一个项目中的文件,但未能将Global.asax.cs嵌入Global.asax文件中(这两个文件以前都存在于同一级别)。

Global.asax arrangement

答案 4 :(得分:5)

我之前遇到过类似的事情有两个原因; 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>

答案 5 :(得分:3)

我在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 :(得分:3)

以我为例,当我浏览到 site5.com 我收到以下错误。

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

最可能的原因: 未为请求的URL配置默认文档,并且服务器上未启用目录浏览。

然后当我浏览到

site5.com/home/index

我遇到了

HTTP错误404.0-找不到 您要查找的资源已被删除,名称已更改或暂时不可用。

最可能的原因: 指定的目录或文件在Web服务器上不存在。 该URL包含印刷错误。 自定义过滤器或模块(例如URLScan)会限制对文件的访问。

我所做的全部工作都在IIS ASP.NET 4.8中安装了该功能,如下所示。

enter image description here

答案 7 :(得分:2)

当应用程序无法启动时会发生此错误 因此,原因可能是阻止您的应用程序启动的任何原因。

  • 错误的连接字符串
  • 错误的IIS目录权限
  • Application_Start()函数中抛出的异常
  • IOC容器初始化错误
  • IIS ASP.NET注册错误
  • bin文件夹中缺少DLL
  • 等...

答案 8 :(得分:2)

在我的情况下,我有多个项目,但我没有定义启动项目。 所以这个错误正在产生。 定义startUp项目后解决了问题。

答案 9 :(得分:2)

在IIS管理器中,ASP.NET MVC站点指向错误的目录时,可能会发生此错误。

在我的情况下,我无意中将站点指向解决方案目录而不是子项目目录。也就是说,我将网站Physical path设置为

C:\dev\MySolution

而不是

C:\dev\MySolution\MyProject

解决此问题的具体步骤:

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

答案 10 :(得分:2)

我遇到了同样的问题,但我的修复是没有在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);
        }
    }

答案 11 :(得分:1)

如果项目是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”,无法找到默认路线。

答案 12 :(得分:1)

在Visual Studio中创建一个空的ASP.Net应用程序后出现此错误。一旦我将一个文件index.html添加到主解决方案中,它就可以工作了。所以在我的情况下,我只需要将一个文件添加到项目文件夹的根目录。

答案 13 :(得分:0)

在我的情况下,默认情况下没有创建index.aspx文件,在添加其他网页表单后,我没有将表单设置为起始页面...将页面设置为起始页面后,我的问题得到解决。 因此,右键单击Web表单并将表单设置为起始页面 :)

答案 14 :(得分:0)

就我而言,我必须在我的发布配置文件中禁用“从App_Data文件夹中排除文件”,以使用我的XML文档(XmlDocument.xml)部署App_Data文件夹。那摆脱了403.14。

答案 15 :(得分:0)

在我的情况下: 1.在IIS管理器的左侧树中,左键单击计算机名,在右侧对话框中单击ISAPI和CGT限制,在打开的对话框中,选择ASP.NET v4.0.30319并选择启用。有两个ASP.Net v4.0,一个用于32位,另一个用于64位。根据您的操作系统位选择。 2.在左侧树选择应用程序池中,在右侧对话框中,选择您的网站使用的应用程序池。双击该池,在打开的对话框中,.net framke item select .net framework v.4.0.30319。和pipe..item选择积分。 也许上面有一些错误的翻译,因为我的操作系统不是英文版。

答案 16 :(得分:0)

如果不在inetpub / wwwroot下,

IUSR permissions在文件夹上使用将是一些解决方案。

答案 17 :(得分:0)

如果有人碰到了MVC以外的其他项目,则该事件:

我的项目是WCF项目,它运行.svc个文件-没有默认文档。结果,我在myhost.com/处收到403.14错误,但是我从web.config文件中添加了一个baseAddress路径(例如myhost.com/mybaseaddresspath.svc时,我得到了一个网页。

答案 18 :(得分:0)

我的同事做了URL Rewrite rule,将所有URL简化为StaticFileHandler;映射到我的应用程序物理文件夹根目录中的文件路径。

(即过度攻击性的URL重写意味着我的控制器/操作不起作用)

检查应用程序的URL重写规则,以确认它们是否达到了您的期望。

答案 19 :(得分:0)

我遇到了类似(但不完全相同)的问题。

我必须转到“控制面板”中的打开或关闭Windows功能,并添加ASP.NET 3.5和4.7: enter image description here

然后它对我有用。

答案 20 :(得分:-1)

同时检查:

出现此问题的原因是网站未启用“目录浏览”功能,并且未配置默认文档。要解决此问题,请使用以下方法之一:

  • 方法1:启用IIS中的目录浏览功能(推荐)
  • 方法2:添加默认文档方法
  • 方法3:在IIS Express中启用目录浏览功能

LINK:https://support.microsoft.com/en-us/kb/942062

答案 21 :(得分:-1)

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