52

我已经在位置 C:\Users\DEVESH\Desktop\Projects\MvcMusicStore-v3.0\MvcMusicStore-Completed\MvcMusicStore 下载了 MVC Music Store ASP.NET 应用程序,并将网站添加到 IIS 上的同一位置。我还授予了 IIS_IUSRS 的权限,但是当我运行 localhost 时出现错误:

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

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

4

22 回答 22

52

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

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

如果您运行的是一个实际上应该有 .NET v2.0 的旧站点,这不适用,当然 :)

于 2014-02-17T20:12:47.557 回答
24

就我而言,ASP.NET 未在服务器上注册。尝试在命令提示符下执行此操作:

视窗 32 位

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

视窗 64 位

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir 
于 2016-07-04T08:33:47.683 回答
16

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

403 - Forbidden: Access is denied.

一旦我添加了这些文件,它就开始工作得很好。

于 2014-08-13T00:46:15.343 回答
9

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

Global.asax 安排

于 2015-08-24T09:51:29.730 回答
6

我在 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 模块概述:Microsoft IIS 官方网站

于 2017-04-21T14:58:29.907 回答
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>
于 2013-07-13T15:37:34.937 回答
5

当 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. 单击确定。
于 2017-07-10T15:06:16.607 回答
4

就我而言,当我浏览到 site5.com 时,出现以下错误。

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

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

然后当我浏览到

site5.com/home/index

我遇到了

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

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

我所做的只是在 IIS ASP.NET 4.8 中安装了该功能,如下所示。

在此处输入图像描述

于 2020-02-22T10:09:45.373 回答
2

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

我必须在控制面板中打开或关闭 Windows 功能并添加 ASP.NET 3.5 和 4.7: 在此处输入图像描述

然后它对我有用。

于 2020-05-12T20:09:09.517 回答
2

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

  • 错误的连接字符串
  • 错误的 IIS 目录权限
  • Application_Start() 函数中引发异常
  • IOC 容器初始化错误
  • IIS ASP.NET 注册错误
  • bin 文件夹中缺少 DLL
  • ETC...
于 2016-12-15T16:08:11.593 回答
2

在 Visual Studio 中创建一个空的 ASP.Net 应用程序后,我遇到了这个错误。一旦我将文件 index.html 添加到主要解决方案中,它就起作用了。所以在我的例子中,我只需要在项目文件夹的根目录中添加一个文件。

于 2017-01-04T15:10:34.507 回答
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);
        }
    }
于 2015-10-21T13:47:33.713 回答
2

也检查一下:

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

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

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

于 2016-11-10T10:23:26.043 回答
2

就我而言,我有多个项目,但我没有定义起始项目。所以这个错误正在产生。定义启动项目后解决了这个问题。

于 2016-01-07T15:01:29.980 回答
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”并且找不到默认路由。

于 2016-05-09T14:55:02.747 回答
1

IUSR permissions如果不在 inetpub/wwwroot 下,则在文件夹上使用将是一些解决方案。

于 2018-02-20T22:42:28.443 回答
1

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

于 2017-05-12T17:08:51.980 回答
0

如果有人在 MVC 以外的项目中遇到此问题:

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

于 2019-02-05T17:38:06.623 回答
0

我的同事制定了一个URL Rewrite 规则,将所有 URL 简化为一个 StaticFileHandler;映射到我的应用程序物理文件夹根目录的文件路径。

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

检查您的应用程序的 URL 重写规则,以确认它们符合您的预期。

于 2019-05-09T23:44:41.150 回答
0

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

于 2018-01-26T00:33:40.113 回答
0

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

于 2018-01-05T21:06:39.690 回答
-1

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

于 2019-01-16T11:59:21.143 回答