【发布时间】:2020-04-22 17:17:31
【问题描述】:
我们有 2 台服务器,我们称它们为 Server1 和 Server2。 Server1 是我们的数据库服务器,Server2 是我们运行 .NET 4.5 Web 应用程序的应用程序服务器。
Server1 上的文件夹创建为: C:\SomeFolder\SubFolder
相同的内容已被共享,并且“所有人”被授予对该文件夹的“完全访问权限”,包括共享权限。
同一文件夹作为符号链接映射到 Server2 (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# Web 应用程序创建子目录时:
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 上的应用程序池标识设置为 LocalSystem,得到了同样的错误。我将 Server2 上的应用程序池标识设置为 Server 2 上的“管理员”帐户,仍然出现相同的错误。
但是,使用相同的管理员帐户和使用文件资源管理器创建子目录和文件的 RDPing 到 Server2 工作正常。
有人可以协助如何使用 C#/代码创建子文件夹/文件吗?
【问题讨论】:
-
当你尝试创建 level2 时 level1 是否已经存在?
-
这条路径
C:\inetpub\wwwroot\Transportation\App_Data\Backups\2020\01\04\11从何而来? -
@Milney Nopes。但是 CreateDirectory 发布它可以创建嵌套子文件夹:docs.microsoft.com/en-us/dotnet/api/…
-
@PavelAnikhouski 请忽略。我更新了问题。该路径是我们系统中的实际路径,而我在问题中使用了示例目录路径。
-
@Milney 请添加您的评论作为答案,以便我接受它作为正确的答案。我尝试在所有级别(即 Level1 和 Level2)的树中手动创建目录并且它有效。看起来 .NET 无法确定在这种情况下要创建的目录结构。
标签: c# windows subdirectory symlink