【发布时间】:2020-11-19 21:46:21
【问题描述】:
我正在实现一个 .NET Core (3.1) Web api,它从网络驱动器读取文件,在其中进行字符串操作,并将它们写到不同的文件夹中(在同一个网络驱动器中)。
目标是通过 HTTP 请求触发该过程。
为此,我创建了我的 web api 项目,部署到 IIS 10 (win10),并且 web 应用程序运行完美。
但是,我在尝试访问网络驱动器时总是遇到权限问题:
System.UnauthorizedAccessException: Access to the path '\\my\network\drive' is denied.
at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)
at System.IO.Directory.CreateDirectory(String path)
...
我尝试在应用程序池 -> 高级设置 -> 身份下使用所有不同的身份,但没有任何效果。
我从公司的基础架构团队那里听到,对此网络驱动器的授权是在用户级别授予的,因此无法仅授予我的 Web 服务器的计算机帐户访问该驱动器的权限(如果我不是,请道歉在这里使用适当的术语 - 不是网络专家)。
我这几天一直在尝试解决这个问题,但没有任何运气。任何帮助将不胜感激。
TL;DR:
我有一个接收 HTTP 请求的 .NET Core Web 应用程序,当它接收时,它应该读取和写入网络驱动器中存在的文件。但是,抛出 System.UnauthorizedAccessException,阻止我的应用程序访问网络驱动器及其内容。
更新:
不确定这是否有意义,但我的想法是,我不能允许访问我的网络驱动器以组 IIS_IUSRS(应用程序池用户组),因为它是托管我的应用程序的机器中的一个本地组.在这种情况下,也许我需要将该应用程序池配置为作为在我的网络驱动器中具有读/写权限的特定域用户运行。这甚至可能吗?如果是这样,我怎样才能做到这一点?
【问题讨论】:
-
如果你打开文件资源管理器并粘贴 \\my\network\drive,你看到内容了吗?
-
您的应用程序池在哪个用户下运行? 要具体。
-
@Delphi.Boy 更重要的是:如果 web 服务器运行的用户帐户 会这样做:it 会看到内容吗?
-
@Delphi.Boy,是的,我可以正常访问驱动器。
-
@mjwills,当我右键单击我的应用程序池并转到高级设置时,身份设置为 LocalSystem。请注意,我使用的是 IIS 10。