我在 IIS 版本 10.0.17763.1 中创建了一个本地“测试站点”
当我测试设置时:
身份验证-成功
授权 - 无法验证访问路径,错误消息:
“服务器配置为使用内置帐户的传递身份验证来访问指定的物理路径。但是,IIS 管理器无法验证内置帐户是否具有访问权限。请确保应用程序池标识对物理路径具有读取访问权限。如果此服务器已加入域,并且应用程序池标识为 NetworkService 或 LocalSystem,请验证 \$ 是否具有对物理路径的读取访问权限。然后再次测试这些设置。”
我尝试授予 mypcname$ 访问权限,但收到一条错误消息:
“无法找到名为“mypcname$”的对象。请检查所选对象类型和位置的准确性,并确保您正确输入了对象名称,或者从选择中删除此对象。”
我应该怎么办?
我确实了解我需要添加具有访问权限的标识符,问题是:
- 哪个标识符(因为 mypcname$ 不起作用)
- 哪些文件
等待帮助,
埃弗拉特
答案1
除非您的 AppPool 以 NetworkService 身份运行或使用 AD(服务)帐户,否则您无法对网络位置进行身份验证。如果您尝试对 Web 服务器上的本地资源进行身份验证,那么这将改变您的 AppPool 身份以及您授予哪个帐户访问权限。
您授予哪个帐户访问权限取决于您用来运行 AppPool 的身份。
网络资源:
AppPool 身份应为 NetworkService(至少),或 AD 服务帐户(最好是托管服务帐户或组托管服务帐户)。如果您使用 NetworkService,则计算机对象需要获得委派信任。如果您使用服务帐户,则该帐户需要获得委派信任。如果没有这些设置,帐户将无法模拟连接到远程资源的用户。为了启用委派,帐户需要定义适当的服务主体名称 (SPN)(HTTP/[网站的 fqdn])。配置 SPN 后,您可以启用/配置委派。
如果您正在使用 NetworkService,则需要更改安全对象类型以包含计算机并更改位置以搜索您的 AD 域。
然后再次搜索你的计算机名称,mypcname$
如果您使用的是服务帐户,那么您还需要更改安全对象类型以包含服务帐户(有时是计算机,具体取决于 Windows 版本和您的 AD 域)并更改位置以搜索您的 AD 域。搜索您的服务帐户名称 myserviceaccount$。
不要忘记在 NTFS 级别和共享访问级别授予这些权限。
本地资源:
您仍然可以使用 AD 服务帐户来运行您的 AppPool,但这不是必需的。在这种情况下,您只需使用 ApplicationPoolIdentity。使用 ApplicationPoolIdentity 时,您将授予本地计算机上的“IIS AppPool[AppPoolName]”帐户对资源的访问权限。将 [AppPoolName] 替换为您的应用程序池的名称。
答案2
解决方案很简单:
我授予 IUSR 和 computername\IIS_IUSRS 对 testsite 文件夹的访问权限,我删除了 web.config,现在它可以正常工作
感谢您的关注