我需要在映射的网络驱动器上创建一个目录.我正在使用代码:
DirectoryInfo targetDirectory = new DirectoryInfo(path);
if (targetDirectory != null)
{
targetDirectory.Create();
}
Run Code Online (Sandbox Code Playgroud)
如果我指定"\\\\ ServerName \\ Directory"之类的路径,那一切都会好的.如果我将"\\ ServerName\Directory"映射为驱动器Z:,并指定路径"Z:\\",则失败.
创建targetDirectory对象后,VS显示(在调试模式下)targetDirectory.Exists = false,并尝试执行targetDirectory.Create()会引发异常:
System.IO.DirectoryNotFoundException: "Could not find a part of the path 'Z:\'."
Run Code Online (Sandbox Code Playgroud)
但是,相同的代码适用于本地目录,例如C:.
该应用程序是Windows服务(WinXP Pro,SP2,.NET 2),与映射驱动器的用户在同一帐户下运行.Qwinsta回复用户的会话是会话0,因此它与服务的会话相同.
Doo*_*ght 13
基于这个事实,映射的驱动器号不起作用,简单的解决方案是键入完整的网络路径.
阿卡,
我的R:/驱动器已映射到\\myserver\files\myapp\
所以不要使用
"R:/" + "photos"
使用
"\\myserver\files\myapp\" + "photos"
您的应用程序运行所使用的帐户可能无权访问映射驱动器。如果这是一个 Web 应用程序,那肯定是问题所在...默认情况下,Web 应用程序在 NETWORK SERVICE 帐户下运行,该帐户没有任何映射驱动器设置。尝试使用模拟来查看是否可以解决问题。尽管您可能需要找出更好的解决方案,然后仅使用模拟。如果是我,我会坚持使用 UNC 路径。