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

时间:2009-11-16 10:53:26

标签: asp.net-mvc iis hosting

我正在开发一个ASP MVC Web项目。现在我有一个要求迫使我部署到IIS7开发中(检查一些功能)。每当我尝试键入网站的URL时,我都会收到上述错误消息。 (注:开发机器:Vista Home Premium,IIS7)

到目前为止我做了什么:

编辑HOSTS文件(C:\ WINDOWS \ system32 \ drivers \ etc \ hosts)。

将两个域放入其中(127.0.0.1 domain1.com& 127.0.0.1 domain2.com)。

创建了一个文件夹c:\ websites \ dirOfApplication,并从Visual Studio 8中部署到此文件夹。

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

在Web浏览器中键入地址domain1.com会导致上述错误(HTTP错误403.14 - 禁止 - Web服务器配置为不列出此目录的内容。)

我想我错过了一些但不知道的是什么!尝试部署文件System.Web.Mvc,System.Web.Abstraction& System.Web.Routing机智相同的结果。每当我尝试按F5并运行应用程序时,它都能正常工作!

35 个答案:

答案 0 :(得分:221)

也许这对某人有用: 在使用.NET framework 4.5将我的应用程序转换为MVC 4并使用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>

答案 1 :(得分:122)

回复SO here,问题:403 - Forbidden on basic MVC 3 deploy on iis7.5

运行aspnet_regiis -i。我经常发现你需要这样做才能让4.0应用程序运行起来。以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选项。

答案 2 :(得分:30)

我也遇到了这个错误。所有配置和权限都是正确的。 但我忘了将Global.asax复制到服务器,这就是403错误。

答案 3 :(得分:10)

这是因为我对你(我)的所作所为太过确定了!

在我的计算机上安装了IIS 7,但所需的ASP.NET组件(控制面板 - &gt;程序 - &gt;打开/关闭 - > ASP.NET)不是。

所以安装它解决了问题

答案 4 :(得分:7)

我有同样的问题。此Microsoft支持文章为我修复了它。
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信息服务 - &gt;万维网服务 - &gt;常见的HTTP功能
  2. 确保选中“HTTP错误重定向”选项。
  3. - 或 -

    1. 导航到以下节点:Internet信息服务 - &gt;万维网服务 - &gt;性能特点
    2. 确保选中“静态内容压缩”选项。选择任一选项后,单击“确定”保存更改。
    3. 重新启用HTTP错误重定向模块或静态内容压缩模块可确保ASP.NET和IIS正确同步HTTP管道事件。这使URL路由模块能够处理无扩展的URL。

答案 5 :(得分:7)

尝试应用以下设置:

1)IIS_IUSRS上向IIS Server用户授予必要的权限(右键点击网站,然后点击编辑权限&gt;安全性)。

enter image description here

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

enter image description here

希望这会有所帮助......

答案 6 :(得分:7)

在我的情况下,以下方法帮助了我:

    aspnet_regiis -i

  1. Windows\Microsoft.Net\Framework

  2. 将模块添加到system.webServer

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

答案 7 :(得分:6)

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

enter image description here

答案 8 :(得分:4)

取消选中“发布期间预编译” - 我在VS2015中编写的Web服务上出现 403.14 错误,所以我在VS2013中重写了它得到同样的错误。在这两种情况下,我都有“发布时预编译”。我取消选中它但仍然收到错误。在我的情况下,我还有“在发布之前删除所有现有文件”,但是在将新发布的文件复制到服务器上之前,没有删除服务器上目标目录中的所有内容。如果你不这样做 - 留下“ PrecompiledApp.config ”文件会导致问题。删除该文件后,我的VS2013和VS2015版本的Web服务都是黄金。

答案 9 :(得分:2)

请注意,有时错误Managed pipeline mode会导致此错误。有两种选择可供选择integratedclassic

答案 10 :(得分:2)

我在这里尝试了一切;没有用。问题发生在我的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" />

答案 11 :(得分:2)

如果最常见的答案不起作用,请在托管目录中查找名为PrecompiledApp.config的配置,如果存在则将其删除。此文件阻止IISExpress和LocalIIS正常工作。 (我认为这是一个错误)我的案例中的文件内容是:

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

我100%肯定我的情况是问题,因为我在2小时内尝试了所有内容并使用此配置测试了很多次。

还有一件事:您无法在较新版本的Windows和IIS中使用aspnet_regiis,请尝试

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

答案 12 :(得分:2)

如何修复“HTTP错误403.14 - 禁止将Web服务器配置为不列出此目录的内容”

当您在IIS 7+上运行MVC 2+运行时会发生此错误,这是因为ASP.NET 4未在IIS中注册。在我的情况下,我正在创建一个MVC 3项目并在IIS 7.5上托管它。

要解决此问题,请确保安装了MVC 2或更高版本以及.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

答案 13 :(得分:1)

对于我来说,世上没有任何事

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

适用于如果您使用的是Plesk,我只是关闭了此功能,一切开始正常工作。

但是,我不知道确切的问题是什么。

enter image description here

答案 14 :(得分:1)

控制面板>开启或关闭Windows功能> Web服务器>应用程序开发

检查ASP.NET

答案 15 :(得分:1)

还有一件事可能

手动安装.net framework 4.0

此解决方案适用于窗口7上的IIS7

使用管理优先级打开cmd

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

输入aspnet_regiis.exe -i

通过输入run命令“inetmgr”

来找到你的经理

刷新IIS7

重新加载网站。

答案 16 :(得分:1)

检查 Global.asax 文件。 就我而言,它是空的。

答案 17 :(得分:1)

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

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

答案 18 :(得分:1)

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

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

答案 19 :(得分:0)

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

事实上,我的网站因某些原因而被停止,目前我还没有注意到,如果你有同样的问题,请查看它,在WebsitePanel主页上转到网页 - &gt;网站然后从列表中选择您网站的域名,之后在刚刚打开的页面右侧,检查您是否看到单词STARTED,否则如果您看到单词STOPPED,请重新开始。这就是全部。

答案 20 :(得分:0)

如果您查看 Global.asax.cs 并且 Application_Start() 方法以任何方式进行了更改,您可能会收到此错误。

例如,如果您将此方法设为异步,这是不可能的,则会出现此禁止错误。

答案 21 :(得分:0)

在我意识到我正在使用IIS 10(在Windows 10版本2004上)之前,我通读了所有答案,寻找了可行的方法,并且这个问题与IIS 7有关,并且已有近十年的历史了。

话虽如此,请从提升的命令提示符下运行此命令:

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

/all将自动启用从属父功能:IIS-ISAPIFilter,IIS-ISAPIExtensions和IIS-NetFxExtensibility45。

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

enter image description here

答案 22 :(得分:0)

如果您像我一样,并且拥有使用NHibernate的应用程序,并且上述答案还不能解决您的问题。

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

答案 23 :(得分:0)

我的情况与以上任何一种完全不同,并且403:Forbidden错误消息有点像是鲱鱼。

如果您在Global.asax模块中的Application_Start()函数尝试访问web.config并且它所引用的条目不存在,则IIS会阻塞并且(出于某种原因)抛出403:Forbidden错误消息。 / p>

再次检查您是否没有丢失试图在Global.asax模块中访问的web.config文件中的条目。

答案 24 :(得分:0)

在此处添加另一个答案。如果您的Windows 2016 Server运行IIS 10.0,则可能是因为未正确安装IIS。如果您在这里找到自己,这就是我的建议。

  1. 在Visual Studio中,验证用于开发应用程序的.NET Framework版本。右键单击项目,属性页,应用程序选项卡。目标框架。在我的情况下是4.6.1。

  2. 在Web服务器上,谷歌“下载.net framework 4.6.1”并转到MS下载页面,该页面应正确确定浏览器用户代理所需的版本。在我的情况下是X64。

  3. 运行安装程序。请注意,即使您认为可能已经存在,这样做也是安全的。如果已安装,它将显示“已经安装”。

注意:现在,您必须确保已正确将其作为Windows功能“启用”。您还必须验证ASP.NET IIS组件是否也已正确安装和启用。

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

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

  3. 在“服务器角色”选项卡上,展开“ Web服务器IIS和应用程序开发”。除了服务器端包含和Websocket协议之外,我都需要启用其他功能。

  4. 在管理工具下,由于我想要某些遗留功能,我选择启用所有功能(包括IIS 6 MMC),但这是另一篇文章。

在我的情况下,无需重新启动。希望这对某人有帮助。

答案 25 :(得分:0)

尝试了这里建议的每种解决方案后,我发现了另一个可能的解决方案:URLScan

IIS禁用了WebDAV,即使在我的应用程序的web.config中,也删除了WebDAV的处理程序和模块。 PUT仍返回 403-禁止,而IIS日志中没有任何日志条目。 (GET / POST工作正常)。

结果证明IIS启用了活动的ISAPI筛选器(URLScan),从而阻止了所有PUT。删除URLScan后,它对我有用。

答案 26 :(得分:0)

我错误地将IP地址输入一位数,这意味着它将转到我的其他服务器之一。当你得到一个.NET错误页面但是从错误的机器上来说非常困惑!

答案 27 :(得分:0)

我最近遇到此错误,发现问题是由我的Windows Server上未启用“HTTP重定向”功能引起的。这篇博文帮助我完成了故障排除以找到答案(尽管是较旧的Windows Server版本):http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx对于较新的服务器,请转到计算机管理,然后向下滚动到Web服务器角色并单击add role services < / p>

答案 28 :(得分:0)

我一直在使用Identity Impersonate:

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

当向上推送到服务器时,您必须授予用户访问Temporary ASP.NET Files文件夹的权限,以便它可以正确读/写/执行:

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

显然取代&#34; frameworkversion&#34;和#34; aspversion&#34;使用您正在使用的版本。

答案 29 :(得分:0)

我遇到了这个问题,但是通过转到Internet信息服务(IIS)管理器,双击“目录浏览”并单击“启用”,可以轻松修复此问题。

就我而言,我可以直接访问文件,但无法访问文件夹。

答案 30 :(得分:0)

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

答案 31 :(得分:0)

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

答案 32 :(得分:0)

我正在使用:Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

如果以上都不起作用,那么试试这个:

  

取消选中“发布时预编译”

这让我的屁股踢了几天。

答案 33 :(得分:-1)

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

步骤2:在IIS的目录浏览窗口中,单击右侧的“启用操作”,如下图所示:

现在为您的asp.net网站启用了目录浏览,只需在IIS中重新启动Web应用程序并在浏览器中浏览该站点并查看结果。

答案 34 :(得分:-3)

您可以通过以下步骤轻松解决问题:

打开iis管理器并选择您要部署的站点(从左侧树视图面板),然后双击应用程序设置图标打开应用程序设置对话框,然后您应该在屏幕上看到网格视图,因此双击该行命名为网页:已启用,设置值为 true (默认为false)。

它对我有用,因为在我这样做之前我收到了同样的错误我甚至启用了目录浏览(作为在iis论坛中推荐的官方iis指南)但是当我浏览网站时播下了一个目录列表而不是实际的网页,但当我完成上述步骤时,问题解决了,并且每件事情都运行良好(但是在解决这个问题后,不要忘记在sql登录中授予asppool访问权限)

正如我所说,它对我有用,我希望它也适合你 祝你好运