首页 > 解决方案 > 如何允许 .NET Core Web 应用访问网络驱动器?

问题描述

我正在实现一个 .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;博士:

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

更新:

不确定这是否有意义,但我在想的是,我不能允许访问我的网络驱动器来分组 IIS_IUSRS(应用程序池用户组),因为它是托管我的应用程序的机器中的一个本地组。在这种情况下,也许我需要将该应用程序池配置为作为在我的网络驱动器中具有读/写权限的特定域用户运行。这甚至可能吗?如果是这样,我该如何做到这一点?

标签: c#.netiis.net-core

解决方案


This is because your drive has set access permissions and the application cannot access it.

Right click on your drive directory, then click "Properties":

enter image description here

Click "Edit":

enter image description here

I recommend giving all "Group or user names" full control permissions:

enter image description here


推荐阅读