我有一个运行 Windows 2012 R2 的 VM,在该 VM 上运行一个网站、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 路径的地方。
事实证明,解决方案非常简单,只是隐藏在一个相对晦涩的环境中。
在主贴里,我说...
我打开了 IIS 管理器,转到了应用程序池,并选择了我的 RestAPI 池。然后我单击高级选项,转到身份,并将详细信息更改为可以访问 UNC 驱动器的用户。
原来我在那里的时候错过了一步。
仍然在高级设置页面上,有一个选项“加载用户配置文件”。
为了让 IIS 使用为用户设置的凭据,该设置需要设置为True。
完成后,我重新启动了 RestAPI,它可以完全访问 UNC 驱动器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句