HTTP 错误 403.14 - 禁止 - 带有 IIS Express 的 MVC 4
Posted
技术标签:
【中文标题】HTTP 错误 403.14 - 禁止 - 带有 IIS Express 的 MVC 4【英文标题】:HTTP Error 403.14 - Forbidden - MVC 4 with IIS Express 【发布时间】:2013-06-25 12:34:30 【问题描述】:这似乎是一个已经被问过/回答过很多次的问题。不是。
开发环境: 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
模板。
即使我将默认路由留在底部并删除前两条路由,它仍然不起作用。我做错了什么?
非常感谢您的帮助。
【问题讨论】:
您最近更改了路线吗?那将是我首先要看的地方。 路由应该默认只是一个控制器 URL 到它的索引页面,除非你改变它 是的。你说的对。我最近修改了路线。我已经编辑了我的问题并包含了 RegisterRoutes 方法 我遇到了这个问题,因为我的 MVC 项目的根目录中有一个与区域同名的文件夹。接受的答案也解决了这个问题。 【参考方案1】:您的路线看起来不错。这不应该引起任何问题。该错误仅在http://localhost:49962/managescholars/
上发生,这意味着可能存在其他同名资源。
您能否确保您的代码在执行期间不会错误地创建文件夹managescholars?”
【讨论】:
非常感谢。这确实是问题所在。我错误地编写了一个可以保存文件并创建文件夹的代码。这创造了导致问题的“管理学者”。 完美答案,“/products”路由也有同样的问题,是的,我有一个物理文件夹和一个名为“products”的控制器,删除了文件夹和宾果游戏!非常感谢! 是的!物理文件夹也是我的问题。 在使用Server.MapPath(.....)时,会使用路由路径作为文件夹(区域名等),如果创建文件夹,会从开始创建从您网站的根路径,这可能会导致路由问题...【参考方案2】:我遇到了同样的问题。解决起来很容易。
当您在项目设置中编辑保护 URL 中的属性时,由于 IIS Express 冲突而出现此问题。 解决这个问题很容易:
1 - 在“.vs\config”目录中查找文件“applicationhost.config”。此文件夹位于解决方案的根目录。您可以使用记事本++打开它
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">
注意:在进行更改之前备份文件。
拥抱
【讨论】:
正确!,这是大多数时候发生的事情,因此您将得到禁止的错误。 这对我有用,感谢您的指导。【参考方案3】:首先,我假设
http://localhost:49962/managescholars/
其实是
http://localhost:49962/manage/scholars/
。如果没有,那是你的问题:)
我不是路由方面的专家,但在您的 Scholars
路由中,userFriendlyName
参数不是可选的,这意味着 http://localhost:49962/manage/scholars/
不会匹配您的任何规则,IIS 会将其视为请求列出文件夹的内容。
【讨论】:
【参考方案4】:太棒了!! 就我而言,这是因为我将应用程序配置为在错误的 url 中运行,但是当我返回正确的 url 时,外观并没有压倒 applicationhost.config。
如上所述,我只设法解决了这些步骤。
【讨论】:
您可以编辑其他答案并添加此答案,而不是制作新答案。【参考方案5】:如果有人遇到与我相同的问题并绝望地进入此页面。 如果调试网站有效但不能在一个网站上:
检查 global.asax 上的修改 检查路由配置是否仍然存在...
我知道这很愚蠢,但在 git 合并 6 小时后丢失了......
【讨论】:
【参考方案6】:我知道原始问题已得到解答,但以下在我的情况下有效。 我在使用 IIS Express 的 VS2013 上遇到了完全相同的问题。在我的情况下,访问 /Login 没有在 LoginController 中获得索引操作。我检查时没有物理文件夹,但经过更多挖掘后,我发现在 IIS Express 上为 /Login 路径创建了虚拟目录,导致了这种情况。我从 applicationhost config(Documents\IISExpress\config) 中删除了虚拟目录以解决问题。
【讨论】:
【参考方案7】:就我而言,使用 Visual Studio 2015,我通过以下步骤解决了问题:
停止 IIS Express 关闭 Visual Studio 删除 我的解决方案目录.vs\config 中的文件 applicationhost.config 删除目录 Documents\IISExpress\config 开始 VS,F5 享受 :)【讨论】:
【参考方案8】:在我的情况下,使用@Fl4v 答案后,我在 my solution directory.vs\config 中的文件 applicationhost.config 上搜索 directoryBrowse 属性,结果为假。 更改为true,重新启动iis,现在它终于可以工作了。
【讨论】:
【参考方案9】:如果没有启用,你应该去用户名/并启用它。
【讨论】:
以上是关于HTTP 错误 403.14 - 禁止 - 带有 IIS Express 的 MVC 4的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 错误 403.14 - 禁止。 ASP.NET MVC
HTTP 错误 403.14 - 禁止 - Web 服务器配置为不列出此目录的内容
HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出内容
HTTP 错误 403.14 - 禁止 - MVC4 .net 4.5 捆绑包