检查远程服务器和各种驱动器上是否存在文件

时间:2014-10-17 20:06:58

标签: c# asp.net remote-server

我们有一个aspx页面需要检查我们的视频服务器上是否存在视频文件,如果该文件存在则显示链接。但是,我们的视频不会存储在C驱动器上,而是存储在D驱动器上。

我试过了

System.IO.File.Exists(@"http://ourvideoserver/pcode/videofile_name.mp4") and 
System.IO.File.Exists(@"\\ourvideoserver\\D:\\pcode\\videofile_name.mp4")

最后一个只是疯狂猜测

我无法弄清楚如何在与C不同的驱动器上检查远程服务器上的文件。

有人能指出我如何检查远程服务器的D驱动器

2 个答案:

答案 0 :(得分:2)

在UNC路径中,驱动器由$表示。也就是说,D $。试试这个:

System.IO.File.Exists(@"\\ourvideoserver\D$\pcode\videofile_name.mp4")

答案 1 :(得分:0)

所以,这样的事情应该可行(当我将其作为单元测试运行时,它会改变服务器名称)。

[TestMethod]
public void CheckUNCFileExists()
{
      Assert.AreEqual(true, File.Exists("\\\\fileserver\\documents\\file.txt"));
      Assert.AreEqual(true, File.Exists(@"\\fileserver\documents\file.txt"));
}

您可能要检查的一件事是实际共享的名称,在文件服务器上使用管理命令提示符(在我的情况下,它是“文档”共享):

C:\Windows\system32>net share

Share name   Resource                        Remark

-------------------------------------------------------------------------------
C$           C:\                             Default share
IPC$                                         Remote IPC
ADMIN$       C:\Windows                      Remote Admin
documents    C:\documents
The command completed successfully.

如果路径看起来没问题(并且您可以使用Windows资源管理器进行操作),另一件需要调查的事情是您的Web应用程序的应用程序池标识(如果您使用Visual Studio之类的东西在桌面上调试,可能就是这样)或者您的IIS管理员在Web服务器端配置的任何内容)对文件夹/文件具有读取权限(对于Windows共享权限)和读取权限(通过NTFS权限)(同样,取决于管理员的偏执程度,您可能还需要“更高文件夹”的“遍历”权限。

如果使用Windows资源管理器无法访问它,并且您正在使用管理共享(例如ex c $,d $等),则应该使用不同的共享名称重新共享该文件夹(因为这将允许您要更改权限以使其/和IIS应用程序池标识可读。如果您真的想要使用管理共享名称,则必须修改管理共享的权限,并且可能需要执行以下操作:

http://support.microsoft.com/kb/971277