IIS 应用程序池用户无法访问 UNC 驱动器
Posted
技术标签:
【中文标题】IIS 应用程序池用户无法访问 UNC 驱动器【英文标题】:IIS Application Pool User can't access UNC drive 【发布时间】:2019-07-22 14:59:05 【问题描述】:我有一个运行 Windows 2012 R2 的虚拟机,上面运行着一个网站、Rest API 和一些服务。
服务和 Rest API 需要访问特定的 UNC 路径,这需要用户名和密码才能进行身份验证。
所以,我设置了一个用户,以该用户身份登录,并将详细信息添加到凭据管理器:-
cmdkey /add:server\path /user:domain\username /pass:encryptedpassword
以该用户身份登录后,我现在可以打开文件资源管理器并转到 server\path 并拥有对所有文件的完全访问权限。
我更新了服务以作为该用户登录,他们可以完全访问该 UNC 路径,并且可以非常愉快地做他们的事情。
但我无法让 Rest API 访问该路径。
我打开了 IIS 管理器,转到应用程序池,然后选择了我的 RestAPI 池。然后我单击高级选项,转到身份,并将详细信息更改为有权访问 UNC 驱动器的用户。
我已将用户添加到 IIS_IUSRS 组,并且他们已经为服务设置了“作为服务登录”。
我已全部保存,并重新启动了 RestAPI。
RestAPI 否则一切正常。我可以登录网站,四处走动并获取正确的数据等,所有这些都来自 RestAPI。
但是,当我尝试访问 UNC 驱动器上的某些内容时,它失败了
System.IO.IOException: The user name or password is incorrect.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
鉴于其他一切正常,显然用户确实在其凭据中保存了正确的用户名和密码,这意味着由于某种原因 IIS 没有获取这些凭据。
我尝试将 IIS 应用程序池标识设置为:-
域\用户
.\用户
用户
它们都不适用于 UNC 路径。
我试过谷歌搜索,但没有找到任何地方。
帮助我,Stack-Ovi Kerflowbi,你是我唯一的希望!
编辑:我忘了提一件事......
RestAPI 在不需要保存凭据即可访问文件的其他站点上完美运行,它在大约 20 个站点上运行完全没有问题。
正是这个需要凭据才能访问我们得到错误的 UNC 路径。
【问题讨论】:
能否请您发布有关您的rest api的详细信息代码?根据您的错误信息,用户名和密码似乎不正确。 Besies,我建议您检查应用程序池身份以确保用户名和密码正确。 【参考方案1】:事实证明,解决方案非常简单,只是隐藏在一个相对模糊的环境中。
在主帖中,我说...
我打开了 IIS 管理器,转到应用程序池,然后选择了我的 RestAPI 池。然后我单击高级选项,转到身份,然后 将详细信息更改为有权访问 UNC 驱动器的我的用户。
原来我在那儿时错过了一步。
仍然在“高级设置”页面上,有一个选项“加载用户配置文件”。
为了让 IIS 使用为用户设置的凭据,该设置需要设置为 True。
完成此操作后,我重新启动了 RestAPI,它可以完全访问 UNC 驱动器。
【讨论】:
以上是关于IIS 应用程序池用户无法访问 UNC 驱动器的主要内容,如果未能解决你的问题,请参考以下文章