IIS 7中的 ASP MVC 导致: HTTP 错误403.14-禁止

我正在开发一个 ASP MVC 网络项目。现在我有一个需求,它迫使我在开发过程中部署到 IIS7(检查一些特性)。每当我尝试输入网站的 URL 时,我都会收到上面提到的错误消息。(注: 开发机器: Vista 家庭高级版,IIS7)

我到现在为止所做的:

编辑 HOSTS 文件(C: WINDOWS system32驱动程序等主机)。

放入两个域名(127.0.0.1 domain1.com & 127.0.0.1 domain2.com)。

创建一个文件夹 c: websdirOfApplication 并从 VisualStudio8中部署到此文件夹。

在 IIS7中创建了一个主机名为 domain1.com 和应用程序文件夹的新站点。

在 Web 浏览器中输入地址 domain1.com 会导致以上错误(HTTP Error 403.14-For-Web 服务器配置为不列出此目录的内容)

我想我错过了什么,但不知道是什么!尝试部署文件系统。韦伯。MVC,系统。韦伯。抽象与系统。韦伯。同样的结果。每当我尝试按 F5键并运行应用程序时,它都能正常工作!

172263 次浏览

那是因为你(我)太确定自己在做什么!

我的机器上安装了 IIS 7,但是没有安装所需的 ASP.NET 组件(控制面板-> 程序-> 打开/关闭-> ASP.NET)。

所以安装这个解决了问题

我也遇到了同样的问题,这篇微软支持的文章帮我解决了这个问题。 < br/> < a href = “ http://Support.Microsoft.com/? kbid= 2023146”rel = “ nofollow noReferrer”> https://support.Microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http-404-errors-when-they-attempt-to-process-extensionless-urls-on-iis-7-and-iis-7.5

在 Windows 控制面板“程序和特性”应用程序的“打开或关闭 Windows 特性”对话框中,执行以下步骤:

  1. 导航到以下节点: Internet 信息服务—— > 万维网服务—— > 公共 HTTP 特性
  2. 确保选择了“ HTTP 错误重定向”选项。

或者

  1. 导航到以下节点: Internet 信息服务—— > 万维网服务—— > 性能特性
  2. 确保选择了“静态内容压缩”选项。选中任一选项后,单击“确定”以保存更改。

重新启用 HTTP 错误重定向模块或静态内容压缩模块可以确保 ASP.NET 和 IIS 正确地同步 HTTP 管道事件。这使 URL 路由模块能够处理无扩展 URL。

回答问题: 禁止在 iis7.5上部署基本 MVC 3

运行 aspnet_regiis -i。我经常发现你需要这样做才能让4.0应用程序工作。以 Administrator的形式打开命令提示符(右键单击命令提示符图标并选择 Run as Administrator) :

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

安装和注册后,确保应用程序使用的应用程序池设置为。NET 4.0.

更新: 我刚发现这个命令有问题。使用-i 将所有应用程序池更新到 ASP.NET 4.0。

使用 aspnet_regiis -ir安装 ASP.NET 版本,但不会将任何 Web 应用程序更改为此版本。您可能还需要检查-iru 选项。

如果您正在运行 x64,请检查是否在应用程序池设置中启用了32位应用程序

enter image description here

我也遇到了同样的错误,尽管出于以下原因提供了所有解决方案:

  • 失踪的 DLL
  • 数据库连接字符串指向无法访问的服务器。

也许它对某些人有用: 将我的应用程序转换为 MVC 4后。NET 框架4.5,并在我的服务器上安装 IIS 7.0的框架,我遇到了同样的“禁止”错误提到的问题。当我注意到

<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

在我的 web.config 中丢失了。 添加这个之后,一切都工作。简单,但很容易忽略..。

编辑:

当然,上面的解决方案是可行的,但它确实是一种资源浪费。我认为最好像 Chris Herring在评论中指出的那样添加路由模块。

<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>

在我的例子中,web.config 和除/bin 文件夹之外的所有文件都丢失了(不是以某种方式复制的)。
很傻,但这是我最后一次检查。

我也遇到了这个错误。所有的配置和权限都是正确的。 但是我忘了把 Global.asax 拷贝到服务器上,这就导致了403错误。

请注意有时候错误的 Managed pipeline mode会导致这个错误。有两个选择来选择 integratedclassic

我最近出现了这个错误,发现问题是由于在我的 Windows 服务器上没有启用“ HTTP 重定向”功能造成的。这篇博文帮助我解决了问题,找到了答案(尽管是旧版本的 Windows Server) : 新服务器的 http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx转到 Computer management,然后向下滚动到 Web Server 角色,单击 add role services

在我的案例中,以下方法帮助我:

  1. Windows\Microsoft.Net\Framework中的 aspnet_regiis -i

  2. 向 system.webServer 添加模块

    <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    ...
    </system.webServer>
    

我一直在使用身份模仿:

<system.web>
<identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

当向上推送到服务器时,你必须让用户名访问 Temporary ASP.NET文件夹,这样它才能正确地读/写/执行:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

显然,用您正在使用的版本替换“ frameworkversion”和“ aspversion”。

步骤1: 选择在 IIS 中产生 HTTP 错误的站点,然后单击目录浏览,如下图所示:

步骤2: 在 IIS 的目录浏览窗口中,单击右侧的 Enable In Actions,如下图所示:

现在已经为 asp.net 网站启用了 Directory Browsing,只需在 IIS 中重新启动 Web 应用程序,然后在浏览器中浏览该网站,就可以看到结果。

你可按以下步骤轻松解决问题:

打开 iis 管理器,选择您希望部署的站点(从左侧的树状面板) ,然后双击应用程序设置图标打开应用程序设置对话框,然后您应该看到一个网格视图在屏幕上,所以双击行名为 网页: 启用和设置值为 真实(这是默认为假)。

它对我很有用,因为在我这样做之前,我收到了同样的错误,我甚至启用了 浏览目录(正如 iis 论坛推荐的官方 iis 指南) ,但是当我浏览网站时,播种目录列表,而不是实际的网页,但是当我做上述步骤解决了问题,一切都工作正常(但是不要忘记授予访问后 sql 登录的 aspool 当然解决了这个问题)

正如我所说,它对我很有效,我希望它对你也很有效 祝你好运

如何修复“ HTTP Error 403.14-Forban”Web 服务器配置为不列出此目录的内容

当您在 IIS7 + 上运行 MVC2 + 时会发生此错误,这是因为 ASP.NET 4没有在 IIS 中注册。在我的案例中,我创建了一个 MVC 3项目,并将其托管在 IIS 7.5上。

要修复它,请确保您有 MVC2或以上和。安装了 Net Framework 4.0,然后以管理员身份运行命令提示符,并键入以下代码行:

32位(x86)

% windir% Microsoft.NET Framework v4.0.30319 aspnet _ regiis.exe-ir

64位(x64)

% windir% Microsoft.NET Framework64 v4.0.30319 aspnet _ regiis.exe-ir

我使用的是: Win Server 2012 R2/IIS 8.5/MVC4/. Net 4.5

如果上述方法都不管用,那么试试这个方法:

取消选中“发布期间预编译”

这件事让我受了好几天的打击。

使用 C # 4.5的 ASP.NET 项目,我在 Web 平台安装程序中用 安装 ASP.NET 扩展解决了这个问题

取消选中“发布期间预编译”上-我在一个我刚刚在 VS2015中写的 Web 服务上得到了 403.14错误,所以我在 VS2013中重写了它,得到了同样的错误。在这两种情况下,我都在。我没有检查,但仍然得到了错误。在我的例子中,我也有“ 在发布之前删除所有现有文件”,但是在复制新发布的文件之前,我没有从服务器上的目标目录中删除所有内容。如果你不这样做-一个“ 预编译 App.config”文件留下后,导致问题。一旦我删除了这个文件,我在 VS2013和 VS2015版本的网络服务中都是金子般的存在。

还有一件事是可能的

手动安装.net 框架4.0

这个解决方案是针对窗口7上的 IIS7的

开放具有行政特权的 cmd

转到目录“ C: Windows Microsoft.NET Framework v4.0.30319”

类型 aspnet _ regiis.exe-i

通过输入 run 命令“ inetmgr”找到您的 inet 管理器

更新你的 IIS7

重新装载网站。

检查你的 Global.asax文件。 对我来说,是空的。

尝试应用以下设置:

1) IIS Server上的 IIS_IUSRS用户给予必要的权限(右键单击网站,然后编辑权限 > 安全性)。

enter image description here

2) 如果使用 .NET Framework 4,请确保。NET 框架版本是 v4.0Application Pool,您的网站使用。

enter image description here

3) administrator的形式打开命令提示符,并运行 iisreset命令以重新启动 IIS Server

希望这个能帮上忙。

我有这个问题,但它很容易修复到 Internet 信息服务(IIS)管理器,双击目录浏览和单击启用。

在我的情况下,我可以直接访问文件,但不能访问文件夹。

如果顶部的答案不起作用,请在宿主目录中查找名为 PrecompiledApp.config的配置,如果它存在,则删除它。此文件阻止 IISExpress 和 LocalIIS 正常工作。(我认为这是一个错误)在我的情况下,文件的内容是:

<precompiledApp version="2" updatable="true"/>

我100% 肯定这就是我的案例的问题所在,因为我在2小时内尝试了所有的方法,并且用这个配置测试了很多次。

还有一件事: 在新版本的 Windows 和 IIS 中不能使用 aspnet_regiis,所以请尝试使用

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

我什么都试过了,都没用。问题是在我的 Web.config文件,不知何故依赖程序集绑定从最小的 1改为最小的 0

<!-- was -->
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />




<!-- should have been -->
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

我知道您在内部主机上遇到过这个问题,但是我以前在外部主机上遇到过这样的问题,在我的情况下,它有自己的解决方案,也许它可以节省某人的时间:

事实上,我的网站因为一些我目前还不知道的原因被停止了,如果你也有同样的问题,检查一下,在 WebsitePanel 的主页上,进入 Web-> Webites,然后从列表中选择你的网站的域名,然后在刚刚打开的页面的右侧,检查你是否看到单词 STARTED,或者如果你看到单词 STOPPED,让它重新开始。仅此而已。

我把 IP 地址输错了一个数字,这意味着这个 IP 地址会转到我的其他服务器上。非常令人困惑。NET 错误页面,但从错误的机器!

我知道这是一个老主题,但是如果您有一个名称与控制器中的路由相同的文件夹,您也可能会得到这个错误(在调试时)。

例如,如果您有一个 UserController,其路由名为/User,并且您的解决方案中还有一个名为“ User”的文件夹,那么 IISExpress 将尝试浏览该文件夹,而不是显示您的视图。

在尝试了这里提出的所有解决方案之后,我发现了另一个可能的解决方案: 网址扫描

IIS 禁用了 WebDAV,甚至在我的应用程序的 web.config 中,WebDAV 的处理程序和模块也被删除了。PUTs 仍然返回一个 403禁止,在 IIS 日志中没有任何日志条目。(GET/POST 工作正常)。

原来 IIS 启用了一个活动的 ISAPI 筛选器(URLScan) ,这阻止了所有的 PUTs。删除 URLScan 之后,它对我起作用了。

这里又添加了一个答案。如果您在运行 IIS 10.0的 Windows2016服务器上,可能是因为 IIS 没有正确安装。如果你发现自己在这里,我建议你这么做。

  1. 在 VisualStudio 中,验证。NET 框架版本,你用来开发应用程序。右键单击项目、属性页、应用程序选项卡。目标架构。对我来说是4.6。

  2. 在网络服务器上,谷歌下载。NET 框架4.6.1’,然后转到 MS 下载页面,该页面应该能够正确地确定您所需的浏览器用户代理的版本。对我来说是 X64。

  3. 运行安装程序。请注意,这样做是安全的,即使你认为它可能已经存在。如果是的话,它会说“已经安装”。

注意: 现在你必须确保它是正确的“启用”作为一个 Windows 功能。您还必须验证 ASP.NET IIS 组件是否正确安装和启用。

  1. 再次在网络服务器上,转到服务器管理器,添加角色和功能,然后选择基于角色或功能。然后单击“下一步”。

  2. 确保在目标服务器选项卡上选择了本地服务器,然后单击“下一步”。

  3. 在“服务器角色”选项卡上,展开“ Web 服务器 IIS 和应用程序开发”。除了服务器端和 Websocket 协议之外,我已经启用了所有功能。

  4. 在 ManagementTools 下,我选择启用所有功能(包括 IIS6MMC)是因为我想要某些遗留特性,但这是另一篇文章。

我的案子不需要重启,希望这能帮上忙。

我的情况完全不同于其中任何一个,而403: 禁止错误消息有点像是转移注意力。

如果 Global.asax 模块中的 Application _ Start ()函数试图访问 web.config,而它所引用的条目不在那里,IIS 就会卡住,并且(出于某种原因)抛出403: 禁止错误消息。

再次检查 web.config 文件中是否缺少一个试图在 Global.asax 模块中访问的条目。

如果你像我一样有一个使用 NHibernate 的应用程序,而上面的答案并没有解决你的问题。

您应该在应用程序中查看连接字符串; 可能在 webconfig 文件中查看连接字符串,以确保它是正确的。

控制面板 > 打开或关闭 Windows 特性 > Web 服务器 > 应用程序开发

检查 ASP.NET

对我来说什么都不管用,

我发现了问题,这个可能对某些人有帮助,

适用于如果你正在使用 Plesk,我刚刚关闭这个东西,一切开始工作。

然而,我不知道它究竟有什么问题。

enter image description here

在我意识到我正在使用 IIS10(在 Windows 102004版本上)之前,我通读了这里的每一个答案,寻找一些有用的东西,这个问题是关于 IIS7的,几乎有十年的历史了。

如上所述,在提升的命令提示符下运行:

dism /online /enable-feature /all /featurename:IIS-ASPNET45

/all将自动启用相关的父特性: IIS-ISAPIFilter、 IIS-ISAPIExtended 和 IIS-NetFxExtensibility45。

在此之后,您将注意到提到了两个新的(至少在我的环境中)应用程序池名称。NET v4.5.以前使用 DefaultAppPool 的 ASP.NET 网络应用程序将 工作而已

enter image description here