C# 如何允许.NET核心web应用访问网络驱动器?
我正在实现一个.NET Core(3.1)web api,它从网络驱动器中读取文件,在其中执行字符串操作,并将其写入不同的文件夹(在同一网络驱动器中) 目标是通过HTTP请求触发该进程 为了实现这一点,我创建了我的WebAPI项目,部署到IIS10(win10),web应用程序运行得非常好 但是,在尝试访问网络驱动器时,我总是遇到权限问题:C# 如何允许.NET核心web应用访问网络驱动器?,c#,.net,iis,.net-core,C#,.net,Iis,.net Core,我正在实现一个.NET Core(3.1)web api,它从网络驱动器中读取文件,在其中执行字符串操作,并将其写入不同的文件夹(在同一网络驱动器中) 目标是通过HTTP请求触发该进程 为了实现这一点,我创建了我的WebAPI项目,部署到IIS10(win10),web应用程序运行得非常好 但是,在尝试访问网络驱动器时,我总是遇到权限问题: System.UnauthorizedAccessException: Access to the path '\\my\network\drive' is
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;医生:
我有一个.NET核心web应用程序,它接收HTTP请求,当它接收HTTP请求时,它应该读取和写入网络驱动器中存在的文件。但是,会引发System.UnauthorizedAccessException,阻止我的应用程序访问网络驱动器及其内容
更新:
不确定这是否有意义,但我想的是,我不能允许组IIS_IUSRS(应用程序池用户组)访问我的网络驱动器,因为它是承载我的应用程序的计算机中的本地组。在这种情况下,可能我需要配置应用程序池,使其作为在我的网络驱动器中具有读/写权限的特定域用户运行。这可能吗?如果是,我如何才能做到这一点?这是因为您的驱动器设置了访问权限,而应用程序无法访问它 右键单击驱动器目录,然后单击“属性”: 单击“编辑”: 我建议授予所有“组或用户名”完全控制权限:
如果打开文件资源管理器并粘贴\\my\network\drive,是否看到内容?您的应用程序池在哪个用户下运行?具体点。@Delphi.Boy更重要的是:如果web服务器运行的用户帐户是这样的:它看到内容了吗?@Delphi.Boy,是的,我可以很好地访问驱动器。@mjwills,当我右键单击我的应用程序池并转到“高级设置”时,标识设置为LocalSystem。请注意,我使用的是IIS 10。就我而言,这是由组IIS_IUSRS中的用户运行的应用程序池,并且该组是承载应用程序的计算机的本地组。它不是我可以在网络驱动器中设置权限的域组。@Lewis,所以请更改应用程序池以在域标识下运行。@mjwills我想这正是我必须做的。但是我在IIS 10中找不到任何帮助我做到这一点的东西。有什么想法吗?这个答案对于网络文件夹不是个好主意!您可以尝试向网络服务用户授予权限。这有一个类似的问题,您可以参考此链接: