一段时间以来,我一直在尝试将我要做的事情简化为最简单的工作形式。
此时,我的设置包括:
- 干净的 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
不是必需的,只要您不将其用作应用程序池的标识即可。
此时,您有两种选择来完成这项工作。
- 将
iusr
的权限添加到“d:\myfiles\”
或
- 为您的站点更改
匿名身份验证凭据
。
在 IIS 管理器中选择您的站点,双击 Authentication
图标并选择 Anonymous Authentication
,在右侧单击 Edit...
然后勾选 Application Pool Identity
。
现在使用应用程序池身份帐户而不是 IUSR
来访问文件,并且该帐户自动成为已经具有权限的 IIS_IUSRS
的成员。
总结一下,在不进行此更改的情况下,IUSR
和 IIS_IUSRS
都需要读取权限。
我通常不考虑 IUSR
,只使用 IIS_IUSRS
或实际的应用程序池标识。
关于c# - 虚拟文件夹可从 IIS 访问,但不能从网页访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323447/