HTTP错误403.14 – 禁止使用 – 带有IIS Express的MVC 4

这似乎是一个已经被多次询问/回答的问题。 不是。

开发环境: VS 2012和MVC 4.我使用内置的IIS Express来运行应用程序。

直到昨天才发生此错误。 它突然开始发生,我被卡住了。 奇怪的是它只发生在一个场景中。

当我尝试访问http://localhost:49962/managescholars/ ,它显示错误

 HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents of this directory. 

但使用http://localhost:49962/managescholars/Index工作正常。 同一控制器的其他动作方法也可以正常工作。 例如http://localhost:49962/managescholars/create 。 所有其他控制器也可以正常工作。

我尝试将以下内容添加到web.config中。

      

我也试过以管理员身份运行以下命令

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

但它们都没有奏效。

编辑:

我修改了我的路线。 他们看起来如下。

  public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "ManageScholarLectures", url: "Manage/Lectures/{userFriendlyName}", defaults: new { controller = MVC.ManageLectures.Name , action = MVC.ManageLectures.ActionNames.Index, userFriendlyName = UrlParameter.Optional } ); routes.MapRoute( name: "ManageScholarEdit", url: "Manage/Scholars/{userFriendlyName}", defaults: new { controller = MVC.ManageScholars.Name, action = MVC.ManageScholars.ActionNames.Edit } ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Index, id = UrlParameter.Optional } ); } 

我正在使用T4MVC模板。

即使我将默认路由保留在底部并删除前两个路由,它仍然不起作用。 我做错了什么?

非常感谢您的帮助。

你的路线似乎很好。 这不应该导致任何问题。 该错误仅在http://localhost:49962/managescholars/ ,这意味着可能存在其他一些具有相同名称的资源。 您能否确保您的代码在执行期间不会错误地创建文件夹管理员 ?“

我遇到了同样的问题。 要解决很容易。

出现此问题是由于在项目设置中编辑保护URL中的属性时出现IIS Express冲突。 要解决这个问题很容易:

1 – 在“.vs \ config”目录中查找“applicationhost.config”文件。 此文件夹位于解决方案的根目录下。 您可以使用Notepad ++打开它

2 – 使用程序的“查找”搜索控件的名称(Ctrl + F)。 就我而言,提出问题的控制权是“办公室”。

3 – 删除为此类URL放置IIS设置的任何节点。 见下面的例子:

               

首先,我假设

  http://localhost:49962/managescholars/ 

实际上是

  http://localhost:49962/manage/scholars/ 

。 如果没有那就是你的问题:)

我不是路线专家,但在你的Scholars路线中, userFriendlyName param不是可选的,这意味着http://localhost:49962/manage/scholars/将不符合你的任何规则,IIS将把它视为一个请求列出文件夹的内容。

太棒了!! 在我的情况下,这是因为我将应用程序配置为在错误的URL中运行,但是当我返回到正确的URL时,外观并没有压倒applicationhost.config。

正如我上面所说,我只是设法解决了这些步骤。

万一有人得到同样的问题,我得到了deseperatly进入这个页面。 如果调试网站有效但不在一个网站上:

检查global.asax上的修改检查路由配置是否仍然存在…

我知道这是愚蠢的,但在git合并后6小时就丢失了……

我知道原来的问题已得到解答,但我的案例中有以下问题。 我使用IIS Express在VS2013上遇到完全相同的问题。 在我的情况下,访问/登录没有在LoginController中获得索引操作。 我检查时没有物理文件夹,但经过多次挖掘,我发现在IIS Express for / Login路径上创建了虚拟目录,导致了这种情况。 我从applicationhost配置(Documents \ IISExpress \ config)中删除了虚拟目录以解决问题。

就我而言,使用Visual Studio 2015,我通过以下步骤解决了问题:

  • 停止IIS Express
  • 关闭Visual studio
  • 删除{my solution directory} .vs \ config中的文件applicationhost.config
  • 删除目录Documents \ IISExpress \ config
  • 启动VS,F5并享受:)

在我的例子中,在使用@ Fl4v答案后,我在{my solution directory} .vs \ config中的文件applicationhost.config上搜索directoryBrowse属性,并且存在false。 更改为true,重新启动iis,现在它最终正常工作。

你应该去用户名/并启用它,如果没有启用。