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

本文关键字:驱动器 是否 存在 文件 服务器 检查 | 更新日期: 2023-09-27 18:26:59

我们有一个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驱动器上进行检查吗

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

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

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

所以,这样的东西应该可以工作(当我将其作为单元测试运行时,服务器名称发生了变化)。

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

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