我正在实现一个.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)
...
我已经尝试在Application Pool -> Advances Settings -> Identity下使用所有不同的身份,但没有任何效果。
我从我公司的基础设施团队那里听到的是,对这个网络驱动器的授权是在用户级别授予的,所以不可能只给予我的Web服务器的机器帐户访问驱动器的权限(如果我在这里没有使用适当的术语,请道歉-不是一个网络家伙)。
这几天我一直在努力解决这个问题,没有任何运气。任何帮助将非常感激。
TL;DR:
我有一个.NET Core Web应用程序,它接收HTTP请求,当它这样做时,它应该读取和写入存在于网络驱动器中的文件。但是,引发了System.UnauthorizedAccessException,阻止了应用程序访问网络驱动器及其内容。
更新:
不知道这是否有意义,但我想的是,我不能允许IIS_IUSRS组(应用程序池用户组)访问我的网络驱动器,因为它是承载我的应用程序的计算机中的本地组。在这种情况下,也许我需要的是配置该应用程序池,使其作为在我的网络驱动器中具有读/写权限的特定域用户运行。这可能吗如果是这样,我如何才能做到这一点?
2条答案
按热度按时间rkue9o1l1#
这是因为您的驱动器已设置访问权限,应用程序无法访问它。
右键单击您的驱动器目录,然后单击“属性”:
点击“编辑”:
我建议给所有“组或用户名”完全控制权限:
velaa5lx2#
请确保您使用的帐户有权访问路径以运行应用程序池。并确保“加载用户配置文件”设置为True!