2014-10-17 179 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

相關問題