2014-10-17 108 views
0

我们有一个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驱动器的正确方向

+1

什么是服务器基础设施?他们是在同一个本地网络上,还是他们是分开的网络服务器,或者是什么? – 2014-10-17 20:15:02

+0

视频服务器和Web服务器位于不同的服务器上,但位于同一网络中。它适用于视频播放器,但是,我试图从本地机器进行编码,并且可以直接访问服务器。 – mattgcon 2014-10-17 20:16:45

+0

因此,您可以使用samba,并使用Windows资源管理器中使用的相同路径检查文件。您的其他选项是在视频服务器上创建一个用于检查文件的Web服务。 – 2014-10-17 20:18:26

回答

1

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

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

糟糕。谢谢。我编辑了我的回复。 – ChrisG 2014-10-17 20:12:48

+0

我尝试了以下操作,但仍然返回为假System.IO.File.Exists(@“\\ ourvideoserver \\ D $ \\ content \\ ccg2014 \ 11890_240.mp4”) – mattgcon 2014-10-17 20:17:02

+0

您有太多\ s。 @改变转义字符的工作方式。尝试System.IO.File.Exists(@“\\ ourvideoserver \ D $ \ content \ ccg2014 \ 11890_240.mp4”)。 – ChrisG 2014-10-17 20:31:10

0

所以,这样的事情应该工作(当我运行它与服务器名称变化的单元测试它)。你可能要检查

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

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

​​

如果路径似乎没问题(并且可以通过Windows资源管理器访问它),则需要研究的另一件事是,您的Web应用程序的应用程序池标识(如果您正在使用类似Visual Studio的东西在桌面上进行调试,或者无论您的IIS管理员在Web服务器端配置了什么)都可以读取共享(用于Windows共享权限)和读取权限(vi一个NTFS权限)在文件夹/文件上(同样,根据你的管理员的偏执怎么样,你可能还需要在更高文件夹上“遍历”权限)。

如果您无法通过Windows资源管理器访问它,并且您使用的是管理共享(例如c $,d $等),则应该重新共享具有不同共享名称的文件夹(因为这样会允许您更改权限以使其可读/ IIS应用程序池标识)。如果你真的执意要使用管理共享名,你就必须修改管理共享的权限,并可能需要承担这样的事情:

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

相关问题