如何允许.NET Core Web应用程序访问网络驱动器?

问题描述 投票:0回答:2

我正在实现一个 .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)
   ...

我已尝试在“应用程序池”->“高级设置”->“身份”下使用所有不同的身份,但没有任何效果。

我从公司的基础设施团队那里了解到,对该网络驱动器的授权是在用户级别授予的,因此不可能仅向我的网络服务器的计算机帐户授予访问该驱动器的权限(如果我没有使用正确的权限,我深表歉意)这里的术语 - 不是网络专家)。

我有一个接收 HTTP 请求的 .NET Core Web 应用程序,当它收到请求时,它应该读取和写入网络驱动器中存在的文件。但是,抛出 System.UnauthorizedAccessException,阻止我的应用程序访问网络驱动器及其内容。

我认为我不能允许 IIS_IUSRS 组(应用程序池用户组)访问我的网络驱动器,因为它是托管我的应用程序的计算机中的本地组。既然如此,也许我需要的是将应用程序池配置为在我的网络驱动器中具有读/写权限的特定域用户运行。这可能吗?如果是这样,我怎样才能做到这一点?

c# .net iis .net-core
2个回答
2
投票

这是因为您的驱动器设置了访问权限,应用程序无法访问它。

右键单击您的驱动器目录,然后单击“属性”:

点击“编辑”:

我建议给予所有“组或用户名”完全控制权限:


0
投票

确保您使用的帐户有权访问运行应用程序池的路径。并确保“加载用户配置文件”设置为 True!

© www.soinside.com 2019 - 2024. All rights reserved.