网络上的File.Exists ==错了?

时间:2009-04-11 00:47:14

标签: c#

在我的代码中我做了

    if (!File.Exists(getSomePath()))
    {
        MessageBox.Show("... existing" + " " + getSomePath());
        this.Close();
    }

我可以看到getSomePath()是正确的,但是当我在网络上打开应用程序时,它说它不存在。当我将文件夹复制到我的本地驱动器时,它说它确实存在。

怎么回事?

5 个答案:

答案 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