c# - 虚拟文件夹可从 IIS 访问,但不能从网页访问

标签 c# asp.net iis iis-7

一段时间以来,我一直在尝试将我要做的事情简化为最简单的工作形式。

此时,我的设置包括:

  • 干净的 Windows 10 安装。
  • 清理 IIS 10 安装。
  • 在 IIS 中,我添加了一个别名为“dddd”的虚拟目录,指向文件夹“d:\myfiles\”(在根 Web 文件夹之外)。
  • 在 IIS 中,当我右键单击“dddd”> 浏览时:Windows 资源管理器会显示我的文件列表。
  • 但是,在 IIS 中,当我右键单击“dddd”> 单击“管理虚拟目录”> 浏览 > 我得到“访问被拒绝”。

在这一点上并不奇怪;可能与权限有关。所以我开始摆弄 NTFS 权限。

在我更改任何内容之前,我注意到此文件夹列出了具有完全控制权的系统帐户,以及同样具有完全控制权的我的帐户(以及作为所有者的我的帐户)。

我将首先添加具有(默认)权限的网络服务帐户,如读取和执行、列出文件夹内容和读取权限;然而,没有运气。

然后我将添加 IIS_IUSRS 帐户;具有相同的默认权限;仍然拒绝访问。

在这一点上我不想再进一步了,因为我对这些事情的理解——当然是有限的——告诉我这应该行得通。

不应该吗?

为什么不是呢?

或者我们可以反过来问:位于 IIS 根文件夹之外的(虚拟)文件夹需要的最低权限是什么,这样您就可以通过单击一个几乎裸露的链接来列出其内容HTML 文件在几乎干净的 Windows + IIS 安装上?

谢谢,

洪水

最佳答案

IIS_IUSRS 添加权限是正确的,但对于 Network Service 不是必需的,只要您不将其用作应用程序池的标识即可。

此时,您有两种选择来完成这项工作。

  1. iusr 的权限添加到“d:\myfiles\”

  1. 为您的站点更改匿名身份验证凭据

在 IIS 管理器中选择您的站点,双击 Authentication 图标并选择 Anonymous Authentication,在右侧单击 Edit... 然后勾选 Application Pool Identity

现在使用应用程序池身份帐户而不是 IUSR 来访问文件,并且该帐户自动成为已经具有权限的 IIS_IUSRS 的成员。

总结一下,在不进行此更改的情况下,IUSRIIS_IUSRS 都需要读取权限。

我通常不考虑 IUSR,只使用 IIS_IUSRS 或实际的应用程序池标识。

关于c# - 虚拟文件夹可从 IIS 访问,但不能从网页访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323447/

相关文章:

php - asp.net合并压缩css、js文件

asp.net - 在 Visual Studio (2008) 上运行的局域网或远程位置访问网页

javascript - 如何强制每个页面加载某个 javascript 文件?

c# - 如何在机器中创建一个 RSA key 以便在 RSACryptoServiceProvider 中使用?

c# - 如何对齐 ItemsControl 控件 (WPF) 的列

javascript - 从 C# 中的静态方法调用 JavaScript 警报

session - 有没有经典asp的 session 服务器?或者我们可以管理不同机器和经典 asp 应用程序之间的多个 session 吗?

c# - 如何将 IEnumerable<char> 转换为 string[] 以便我可以将它与 String.Join 一起使用?

c# - 如何控制 JSON.net 中大量异构对象的反序列化

asp.net - Visual Studio ASP.NET 调试导致 SQL Server 在空闲时 CPU 使用率过高