首页 文章

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

提问于
浏览
141

我正在开发一个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并运行应用程序时,它运行正常!

27 回答

  • 215

    如何修复“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

  • 121

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

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

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

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

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

    使用C#4.5的ASP.NET项目,我通过在Web Platform Installer中安装 ASP.NET extension 解决了这个问题

  • 28

    这是因为对你(我)正在做的事情过于肯定!

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

    所以安装它解决了这个问题

  • 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" />
    
  • 1

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

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

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

    这让我的屁股踢了几天 .

  • 2

    也许它对某人有用:在用.NET Framework 4.5将我的应用程序转换为MVC 4并在我的服务器上使用IIS 7.0安装框架后,我遇到了问题中提到的相同“禁止”错误 . 当我注意到时,我尝试了上面描述的所有选项都无济于事

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

    我的web.config中缺少 . 添加后,一切正常 . 简单,但容易被忽视......

    EDIT:

    当然,上述解决方案可行,但确实是浪费资源 . 我认为最好在评论中添加Chris Herring指出的路由模块 .

    <system.webServer>
      <modules>
        <remove name="UrlRoutingModule-4.0" />
        <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
      </modules>
    </system.webServer>
    
  • 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功能”对话框中,执行以下步骤:

    • 导航到以下节点:Internet信息服务 - >万维网服务 - >常用HTTP功能

    • 确保选中了"HTTP Error Redirection"选项 .

    -要么-

    • 导航到以下节点:Internet信息服务 - >万维网服务 - >性能功能

    • 确保选中了"Static Content Compression"选项 . 选择任一选项后,单击"OK"以保存更改 .

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

  • 0

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

    在我的情况下,我可以直接访问文件但无法访问文件夹 .

  • 0

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

    enter image description here

  • 6

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

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

  • 0

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

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

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

  • 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

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

  • 0

    尝试应用以下设置:

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

    enter image description here

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

    enter image description here

    希望这可以帮助...

  • 0

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

  • -1

    Uncheck "Precompile During Publishing" 上 - 我在VS2015中编写的Web服务上收到了 403.14 错误,所以我在VS2013中重写了它并得到了同样的错误 . 在这两种情况下,我都有"Precompile During Publishing" . 我取消选中它但仍然收到错误 . 在我的情况下,我也留下了“ Delete all existing files prior to publish " but was not deleting everything from the target directory on the server before copying the new published files there. If you don't do that - a " PrecompiledApp.config ”文件导致问题 . 一旦我删除了该文件,我的VS2013和VS2015版本的Web服务都是金色的 .

  • 0

    我错误地将IP地址输入一位数,这意味着它将转到我的其他服务器之一 . 因为你得到一个.NET错误页面但错误的机器非常混乱!

  • 0

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

    • 缺少DLL

    • 数据库连接字符串指向无法访问的服务器 .

  • -3

    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

    你可以通过以下步骤轻松解决它:

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

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

    正如我所说,它对我有用,我希望它能为你带来好运

  • 10

    我最近遇到此错误,发现问题是由我的Windows Server上未启用功能"HTTP Redirection"引起的 . 这篇博文帮助我完成了故障排除以找到答案(尽管是较旧的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

  • 7

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

    • aspnet_regiis -i in Windows\Microsoft.Net\Framework

    • 将模块添加到system.webServer

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

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

  • 4

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

    事实上我的网站由于某些原因而停止了,目前我还没有注意到,如果你有同样的问题请查看它,在WebsitePanel主页面转到网站 - >网站然后从列表中选择你网站的域名,在刚刚打开的页面右侧,检查您是否看到STARTED一词,否则,如果你看到单词STOPPED,让它再次开始 . 就这样 .

  • 1

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

  • 0

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

  • 2

    还有一件事是可能的

    手动安装.net framework 4.0

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

    open cmd with administration previleges

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

    输入aspnet_regiis.exe -i

    通过输入run命令“inetmgr”来找到你的inet经理

    刷新你的IIS7

    重新加载网站 .

相关问题