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 驱动器的主要内容,如果未能解决你的问题,请参考以下文章

iis7 无法验证对路径的访问

故障公告:IIS应用程序池停止工作造成博客站点无法访问

iis无法启动。提示“另一个程序正在使用此文件,进程无法访问“

在 IIS 中使用 UNC 名称时出错

无法访问 Powershell 远程会话中的 UNC 路径

IIS:应用程序池在网站访问时停止