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 驱动器。
我有一台 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 驱动器。