IIS 应用程序池用户无法访问 UNC 驱动器

IIS Application Pool User can't access UNC drive

我有一台 VM 运行 Windows 2012 R2,上面有 运行 一个网站、Rest API 和一些服务。

服务和 Rest APIs 需要访问特定的 UNC 路径,这需要用户名和密码进行身份验证。

因此,我设置了一个用户,以该用户身份登录,并将详细信息添加到凭据管理器:-

cmdkey /add:server\path /user:domain\username /pass:encryptedpassword

以该用户身份登录后,我现在可以打开文件资源管理器并转到 server\path 并拥有对所有文件的完全访问权限。

我更新了服务以作为该用户登录,他们可以完全访问该 UNC 路径,并且可以很愉快地做他们的事情。

但我无法让其他 API 访问该路径。

我打开了 IIS 管理器,转到应用程序池,然后选择了我的 RestAPI 池。然后我单击高级选项,转到身份,并将详细信息更改为我的用户可以访问 UNC 驱动器。

我已将用户添加到 IIS_IUSRS 组,并且已经为服务设置了 'Logon as Service'。

我已经全部保存了,重启了RestAPI。

The 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 应用程序池标识设置为:-

Domain\User

.\用户

用户

None 个将使用 UNC 路径。

我试过谷歌搜索,但一无所获。

帮助我,Stack-Ovi Kerflowbi,你是我唯一的希望!

编辑:有一件事我忘了提...

The RestAPI 在不需要保存凭据即可访问文件的其他站点上完美运行,运行 在大约 20 个站点上完全没有问题。

正是这个需要凭据才能访问我们收到错误的 UNC 路径。

事实证明解决方案非常简单,只是隐藏在一个相对隐蔽的环境中。

主要post,我说...

I've opened IIS Manager, gone to Application Pools, and selected my RestAPI pool. I then clicked Advanced Options, went to Identity, and changed the details to my User with access to the UNC drives.

结果我在那里错过了一步。

仍然在“高级设置”页面上,有一个选项“加载用户配置文件”。

为了使 IIS 使用为用户设置的凭据,需要将该设置设置为 True

完成后,我重新启动了 RestAPI,它可以完全访问 UNC 驱动器。