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

时间:2013-06-25 12:34:30

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

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

开发环境: 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。

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true" />
  <handlers/>
</system.webServer>

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

%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模板。

即使我将默认路线留在底部并删除前两条路线,它仍然无效。我做错了什么?

非常感谢您的帮助。

8 个答案:

答案 0 :(得分:58)

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

答案 1 :(得分:3)

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

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

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

2 - 使用程序的“查找”搜索控件的名称(Ctrl + F)。就我而言,提出问题的控件是'办事处'。

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

    <site name="G4.Admin(1)" id="8">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" />
                    <virtualDirectory path="/Offices/Edit" physicalPath="C:\Projetos\PortalG4\src" />
                    <virtualDirectory path="/Offices" physicalPath="C:\Projetos\PortalG4" />
                </application>
                <application path="/Offices/Edit/2" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:6920:localhost" />
                </bindings>
            </site>

您应该删除每个元素

<site name = "NAME_PROJECT" id = "X">

注意:在进行更改之前备份文件。

拥抱

答案 2 :(得分:1)

首先,我假设

 http://localhost:49962/managescholars/

实际上是

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

。如果不存在问题:)

我不是路线专家,但在Scholars的路线中,userFriendlyName参数不是可选的,这意味着http://localhost:49962/manage/scholars/不会匹配任何一个您的规则和IIS会将其视为列出文件夹内容的请求。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

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

我知道它很愚蠢,但在git合并后6小时就丢失了......

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

您应该输入用户名/,如果未启用,请启用它。