Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何允许.NET核心web应用访问网络驱动器?_C#_.net_Iis_.net Core - Fatal编程技术网

C# 如何允许.NET核心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

我正在实现一个.NET Core(3.1)web api,它从网络驱动器中读取文件,在其中执行字符串操作,并将其写入不同的文件夹(在同一网络驱动器中)

目标是通过HTTP请求触发该进程

为了实现这一点,我创建了我的WebAPI项目,部署到IIS10(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;医生:

我有一个.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中找不到任何帮助我做到这一点的东西。有什么想法吗?这个答案对于网络文件夹不是个好主意!您可以尝试向网络服务用户授予权限。这有一个类似的问题,您可以参考此链接: