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



我们有两个服务器,我们称它们为Server1&Server2.Server1是我们的数据库服务器,Server2是我们正在运行的应用程序服务器。NET 4.5网络应用程序。

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

同样的内容已经共享,"每个人"都可以"完全访问"文件夹,包括共享权限。

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

mklink /d "c:inetpubwwwrootAppApp_DataSubFolder" "\Server1SubFolder"

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

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

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

System.IO.Directory.CreateDirectory(@"c:inetpubwwwrootAppApp_DataSubFolderLevel1Level2");

同样会出现错误:

Access to the path 'C:inetpubwwwrootAppApp_DataSubFolderLevel1Level2' is denied.
System.UnauthorizedAccessException: Access to the path 'C:inetpubwwwrootAppApp_DataSubFolderLevel1Level2' 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,得到了相同的错误。我在服务器2上将应用程序池标识设置为"管理员"帐户,但仍然收到相同的错误。

但是,使用相同的管理员帐户RDP到Server2并使用文件资源管理器创建子目录和文件是可行的。

有人能帮助如何使用C#/代码创建子文件夹/文件吗?

为子孙后代:

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

最新更新