在使用符号 link 映射的网络共享上创建子目录

Creating a sub-directory on a network share mapped using symbolic link

我们有 2 台服务器,我们称它们为 Server1 和 Server2。 Server1 是我们的数据库服务器,Server2 是我们的应用程序服务器 运行 .NET 4.5 网络应用程序。

Server1 上的文件夹创建为: C:\SomeFolder\SubFolder

相同的内容已共享,并且 "Everyone" 已将 "Full Access" 授予文件夹,包括共享权限。

同一文件夹作为符号映射到 Server2 link (https://superuser.com/a/244572):

mklink /d "c:\inetpub\wwwroot\App\App_Data\SubFolder" "\Server1\SubFolder\"

现在我可以浏览: c:\inetpub\wwwroot\App\App_Data\SubFolder

照常使用文件资源管理器。我可以按预期创建出现在 Server1 上的文件和子文件夹。

然而,当我尝试使用我的 C# 网络应用程序创建子目录时:

System.IO.Directory.CreateDirectory(@"c:\inetpub\wwwroot\App\App_Data\SubFolder\Level1\Level2");

同样报错:

Access to the path 'C:\inetpub\wwwroot\App\App_Data\SubFolder\Level1\Level2' is denied.
System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\App\App_Data\SubFolder\Level1\Level2' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)

我都检查过了。我将 Server2 上的应用程序池标识设置为本地系统,得到了同样的错误。我将服务器 2 上的应用程序池标识设置为服务器 2 上的 "administrator" 帐户,仍然出现相同的错误。

然而,使用相同的管理员帐户并使用文件资源管理器创建子目录和文件的 RDPing 到 Server2 工作。

有人可以协助如何使用 C#/代码创建 sub-folder/file 作品吗?

为了后代:

当您尝试创建 level1\level2 文件夹时,需要检查 level1 文件夹是否已经存在。尽管文档建议它会创建到底层的所有路径,但在使用网络资源和连接点时,API 可能有点粗略 - 尝试先创建 level1 文件夹,然后再创建 level2 文件夹。