在 IIS7 中托管 ASP.NET 会导致访问被拒绝?

Posted

技术标签:

【中文标题】在 IIS7 中托管 ASP.NET 会导致访问被拒绝?【英文标题】:Hosting ASP.NET in IIS7 gives Access is denied? 【发布时间】:2012-05-12 05:13:40 【问题描述】:

我在我的 IIS7 中设置了一个使用 .NET Framework 4.0(由 NetworkService 运行)的应用程序,但是在浏览网站时我得到了这个:

访问被拒绝。 说明:访问处理此请求所需的资源时出错。您可能无权查看请求的资源。 错误消息 401.3:您无权使用您提供的凭据查看此目录或页面(由于访问控制列表而拒绝访问)。请求 Web 服务器的管理员授予您访问权限*

我已尝试授予 NetworkService 对包含网站的文件夹(IIS 中的 Web 应用程序指向的文件夹)的完全权限,但我仍然拒绝访问?

为什么?

【问题讨论】:

请你看看我在ASP MVC in IIS 7 results in: HTTP Error 403.14 - Forbidden上的回答。 【参考方案1】:

看完这个教程:

https://www.youtube.com/watch?v=RbrZbHpXBTE&list=PLp1Emx1rT4z9YWLDXBjUwBb130qv2Zq2x&index=4&ab_channel=LearningProgrammingTutorial

我在使用 RDP(windows server 2016 Datacenter)时遇到了同样的问题 我按照上面的教程并从 IIS 互联网信息服务管理器中启用了我的目录浏览选项。

您要做的是访问您的 IIS 管理器,如果您无法访问那里,您可以查看上面的教程以了解如何访问 IIS 管理器,这对我很有用,这就是我分享的原因.. . 转到:

您应该授予 IUSER 访问权限 (或应用程序工具标识,取决于或您想使用什么) 你的问题就解决了! :)

另外你需要检查你的防火墙和 TCP 设置,如果两台机器之间的 ping 对你不起作用,你可以检查一下: https://operavps.com/rdp-connection-issues/

【讨论】:

【参考方案2】:

在从远程主机拉出并添加到 web.config 上的 appsettings 后,我遇到了这个问题。 我通过启用 Windows 身份验证解决了这个问题:

单击项目并按 f4

确保启用 Windows 身份验证:

【讨论】:

【参考方案3】:

我也遇到了同样的问题, 一切正常,所有权限都授予用户和文件夹。 经过多次研究,我发现 wwwroot(源代码文件夹)与其他用户共享。 我停止了分享,它就像一个魅力。

【讨论】:

【参考方案4】:

经过一番思考和大量试验和错误后,我发现发生此错误是因为我的 web.config 的一部分被 加密 并且出于某种原因密钥不再有效。

重新加密配置部分解决了这个问题。

【讨论】:

【参考方案5】:

在匿名身份验证中检查应用程序池标识并启用表单身份验证将解决拒绝访问错误的问题。 ?

【讨论】:

【参考方案6】:

在我的情况下,运行 c:\windows\Microsoft.Net\Framework64\v4.0.30319\aspnet_regiis.exe /i 解决了 403 访问被拒绝问题。

【讨论】:

你是真正的 MVP!非常感谢!这个错误让我更加头疼了!【参考方案7】:

这就是发生在我身上的事:

Get - Post 没问题。工作得很好。

当我尝试使用Options 动词时,服务器会返回这样的错误。

那么,小心urlScan

我将 OPTIONS 动词添加到 urlscan 配置 .ini 文件中,然后一切正常。

要检查是否安装了 urlscan,请打开您的 iis 管理器,然后打开ISAPI FILTERS url scan 应该会出现在列表中。

【讨论】:

【参考方案8】:

如果已在身份验证中指定了 IUSR 用户,但您仍然遇到此问题,则可能是您的目录列表未启用。一定要检查一下。对我来说就是这样。

【讨论】:

【参考方案9】:

在这里尝试了大多数解决方案,但没有运气。对我有用的是将“所有人”添加到安全权限中。属性 -> 安全 -> 编辑 -> 添加 -> 每个人。给定的默认值足以让我重新获得访问权限。

在不久的将来,我可能应该弄清楚将哪些凭据发送到服务器,以便我可以授予适当的权限。但我希望它可以帮助别人!

【讨论】:

【参考方案10】:

我在这个问题上转了一圈,结果发现默认页面设置不正确。希望这可以帮助其他人避免浪费一小时的时间。

【讨论】:

您在哪里更改了设置?【参考方案11】:

如果您使用匿名身份验证,IIS 7 将使用“IUSR”帐户进行目录访问(除非您已将其设置为使用应用程序池标识。如果您尚未授予 IUSR 对您网站文件夹的足够权限和文件,你会得到这个错误

【讨论】:

【参考方案12】:

操作系统:Windows 7 和 IIS 7

如果您在添加 IUSR & NETWORK SERVICE 后仍有权限被拒绝。 还要添加 IIS_WPG。最后一个用户的添加解决了我的问题。

对于找不到这些用户的人: 当您尝试在文件夹的安全性(文件夹的属性)中添加用户时,单击“选择用户或组”窗口的“高级”。将位置更改为计算机名称,然后单击“立即查找”。您可以在下面的列表中找到这些用户。

【讨论】:

谢谢,这对我有用!我在 windows server 2012 上使用了 IIS_IUSRS,因为那里没有 IIS_WPG。 我没有看到 IIS_WPG。这是你创造的东西吗?【参考方案13】:

我们需要创建一个新用户ComputerName\IUSR,方法是转到网站文件夹-->属性--->安全性--->编辑-->添加并授予读取权限。这肯定行得通。

此解决方案适用于 IIS7

【讨论】:

【参考方案14】:

对我来说,在 Windows 7 中,只有在我为 两个 用户授予站点文件夹的“读取和执行”、“列出文件夹内容”、“读取”权限后,它才开始工作

IUSR 网络服务

【讨论】:

这个解决方案对我有用,但没有其他方法!谢谢。【参考方案15】:

我遇到了同样的问题,我启用了“匿名身份验证”,但它仍然不起作用。 所以我也启用了“表单身份验证”然后它没有任何问题。

【讨论】:

当我在 IIS 中启用 Windows 身份验证时,现在工作正常。谢谢【参考方案16】:

这是由于 WWWRoot 目录安全问题。

简单的解决方案是,只需将 applicatio 文件夹复制到其他驱动器,而不是“C:\Inetpub\wwwroot” 然后为这个新路径创建一个虚拟目录。就是这样。

【讨论】:

【参考方案17】:

对我来说,除了以下解决了问题的方法外,没有任何效果:打开 IIS,选择站点,打开身份验证(在 IIS 部分中),右键单击匿名身份验证并选择编辑,选择应用程序池标识。

【讨论】:

不错。在 Win Server 2012 IIS 8 上为我工作,用于 ASP 经典网站。 这有帮助..但您必须重置整个服务器才能应用设置..尝试逐页重置但没有成功。 必须为现有网站中的新应用程序执行此操作,该应用程序针对不同的 .NET 运行时在应用程序的文档根目录处给我一个 401(直接访问 *.aspx 页面,而文档根目录不是)。 谢谢。第一次尝试就成功了。 您在 2013 年回答了一个问题,它在 2020 年 8 月有效!谢谢【参考方案18】:

我授予了 "IIS_IUser" 的访问权限,但它应该是 "IUSR"。这样就解决了问题。

【讨论】:

这也是我的问题。有趣的是有多少不同的用户。您还有 IIS_IUSR(或者这就是您对 IIS_IUser 的意思?),您还可以添加应用程序池。 这必须固定到他们分发 IIS 的首页! 站点 > 身份验证 > 匿名身份验证 > 编辑 > 特定用户 工作就像一个魅力!向 IUSR 思想添加了 Windows 资源管理器文件夹属性、安全选项卡的权限。 我授予对 IIS_IUser 和 IUSR 的访问权限,完全控制并且它起作用了。【参考方案19】:

在 APP 本身的身份验证设置(IN IIS)中,查看您是否启用了匿名。

【讨论】:

以上是关于在 IIS7 中托管 ASP.NET 会导致访问被拒绝?的主要内容,如果未能解决你的问题,请参考以下文章

检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法

webconfig中注册HttpHandler报错:检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

IIS7.5应用程序池集成模式和经典模式的区别

检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为经典模式)。 - CatcherX

IIS集成和经典配置