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

sav*_*dis 146 iis asp.net-mvc 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并运行应用程序时,它运行正常!

Cyr*_*rom 225

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

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

  • 尝试通过添加路由模块来避免使用此设置 - http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html (8认同)
  • 我喜欢答案评论"也许它对某些人有用"......大声笑......看起来它对TON的人有用,包括我自己. (6认同)
  • 这个!!Arrrrgh我花了一整天的时间来试图让它工作直到我找到你的答案,谢谢!奇怪的是,它会在我本地计算机上的IIS上运行得很好,但不能在生产盒上运行,而且它们都运行IIS7.5 (3认同)
  • 事实证明,当我卸载一个NuGet包时,它从我的Web.config中删除了`runAllManagedModulesForAllRequests ="true"`.谢谢你提到这个,然后我花了一整夜的时间试图解决这个问题. (2认同)
  • 第二个解决了我的问题(谢谢),但我已将同一个站点部署到数十台服务器上,而 web.config 中没有这些服务器,直到今天才遇到此问题。是否有一些更全局的设置会影响是否需要这样做? (2认同)

Bre*_*ski 125

这里回答SO ,问题:403 - 禁止在iis7.5上进行基本的MVC 3部署

aspnet_regiis -i.我经常发现你需要这样做才能让4.0应用程序运行起来.打开命令提示符Administrator(右键单击命令提示符图标,然后选择以管理员身份运行):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i
Run Code Online (Sandbox Code Playgroud)

安装并注册后,请确保您的应用程序正在使用设置为.NET 4.0的应用程序池.

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

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

  • 不要忘记,对于64位系统,它是"Framework64".即,Windows\Microsoft.NET\Framework64\v4.xxx.xxx (2认同)

Bog*_*scu 34

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


sav*_*dis 11

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

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

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


Don*_* V. 9

我遇到过同样的问题.这篇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-错误-当-它们-尝试到进程-扩展名的URL上-IIS -7-和-IIS-7.5

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

  1. 导航到以下节点:Internet信息服务 - >万维网服务 - >常见HTTP功能
  2. 确保选中"HTTP错误重定向"选项.

-要么-

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

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


Ste*_*hev 7

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

  1. aspnet_regiis -iWindows\Microsoft.Net\Framework

  2. 将模块添加到system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
    
    Run Code Online (Sandbox Code Playgroud)


Mur*_*dız 7

尝试应用以下设置:

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

在此输入图像描述

2)如果你使用.NET Framework 4,确保.NET Framework版本是v4.0Application Pool你的网站使用.

在此输入图像描述

希望这可以帮助...


Dav*_*sen 6

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

在此输入图像描述


Jef*_*urs 5

在我意识到我正在使用 IIS 10(在 Windows 10 版本 2004 上)之前,我通读了这里的每个答案,寻找有效的方法,而这个问题是关于 IIS 7 的,已经有近十年的历史了。

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

dism /online /enable-feature /all /featurename:IIS-ASPNET45
Run Code Online (Sandbox Code Playgroud)

/all自动启用依赖的父功能:IIS-ISAPIFilter、IIS-ISAPIExtensions 和 IIS-NetFxExtensibility45。

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

在此输入图像描述