在我的代码中我做了
if (!File.Exists(getSomePath()))
{
MessageBox.Show("... existing" + " " + getSomePath());
this.Close();
}
我可以看到getSomePath()
是正确的,但是当我在网络上打开应用程序时,它说它不存在。当我将文件夹复制到我的本地驱动器时,它说它确实存在。
怎么回事?
答案 0 :(得分:3)
如果您是从网络共享运行它,那么您需要让用户将已编译的程序集添加为.net中的受信任程序集。这样做的方法是“强力命名”你的程序集,并在每个用户的计算机上信任这个强名称。
编辑:原因在于安全性,因此粗心的用户不会从远程(网络共享等)位置获取病毒。仅当用户运行位于远程位置的应用程序时才会发生这种情况。他既不能从远程应用程序访问文件共享,也不能访问自己的本地系统。
答案 1 :(得分:2)
答案 2 :(得分:1)
你提到它在本地运行正常,但是当你从网络共享运行时却没有。您的应用程序是否具有访问文件系统的适当安全权限?默认情况下,从网络共享运行的应用程序的安全权限会降低。
答案 3 :(得分:1)
File.Exists most anywhere is suspect.但是当你打开文件时,这听起来像网络权限问题。
答案 4 :(得分:1)
可能的SMB缓存导致File.Exists看到延迟的结果。
http://technet.microsoft.com/en-us/library/ff686200(v=WS.10).aspx