【发布时间】:2013-12-19 21:20:17
【问题描述】:
我可以在资源管理器中看到网络共享,但是当我尝试在我的应用程序中访问它时,我得到“找不到网络名称。”
这很奇怪,因为同一台服务器还有我可以访问的其他共享。例如:
string[] example_directories = new string[]{
Path.Combine(@"\\example01","vaqua"),
Path.Combine(@"\\example01","vaqua-pub"),
Path.Combine(@"\\example01","yesvirginiabeach"),
Path.Combine(@"\\example01","yesvirginiabeach-pub")
};
// output username
Console.WriteLine("User: " + WindowsIdentity.GetCurrent().Name);
// output each response to Directory.Exists
foreach (string directory in example_directories)
try
{
Console.WriteLine(directory + " : " + Directory.GetCreationTime(directory));
}
catch(Exception e)
{
Console.WriteLine(directory + " : " + e.Message.Trim());
}
Console.Read();
输出:
用户:域\我的用户名 \\example01\vaqua:2013 年 10 月 22 日上午 7:34:30 \\example01\vaqua-pub:2013 年 10 月 22 日上午 7:57:42 \\example01\yesvirginiabeach :找不到网络名称。 \\example01\yesvirginiabeach-pub:2013 年 4 月 4 日上午 10:31:07我可以在资源管理器的 \example01 上看到所有这四个共享,但我的应用程序中不存在 \example01\yesvirginiabeach 共享。
这四个共享都具有相同的权限,我什至打印出我的用户名以确保应用程序在我的信任下运行。
我已让我们的管理员重新共享目录并重新申请权限,但无济于事。
解决方案:我的管理员拼错了共享名称:
\\example01\yesvirginiabeach 为\\example01\yesvirgniabeach。
【问题讨论】:
-
您是否仔细检查了名称
"yesvirginiabeach"是否正确?确保没有什么像 Unicode 字符那样疯狂,它看起来像"i",但实际上是一个不同的字符。 -
也可以试试enumerating the shares(代码见链接)看看你的程序能看到什么。
-
@DavidNorris 请将您的 cmets 组合成一个答案。仔细检查后,文件夹名称是 yesvirgniabeach。啊。管理员。我通过列举股票发现了这一点。谢谢老兄!
标签: c# directory console-application network-shares