2014-01-16 108 views
0

我有一個解決方案,抓取兩個文件,並比較它們,看看它們是否相同。 sourceFilePathdestFilePath都在我的電腦上,但我希望能夠使用相同的解決方案來獲取文件,如果他們在不同的服務器上。我將能夠通過將sourceServer_destServerList的參數設置爲localhost來測試它們。我如何使解決方案使用相關源服務器中的文件?如何使用本地主機從服務器使用文件?

編輯:我在部署解決方案之前使用localhost進行測試。

這是我目前的解決方案:

public class blarto 
{ 
    private Server homeServer; 
    private string homePath; 
    private ServerList awayServers; 
    private string awayPath; 

    private bool ExecuteCommand() 
    { 
     if (File.Exists(awayPath)) 
     { 
      GetSum(homePath); 

      GetSum2(awayPath); 

      if (GetSum != GetSum2) 
      { 
       Console.WriteLine("they are different."); 
       return false; 
      } 
      else 
      { 
      Console.WriteLine("they are the same."); 
       return true; 
      } 
     } 
     else 
     { 
      Console.WriteLine("The destination file does not exist."); 
      return false; 
     } 
    } 
} 

回答

1

假設你可以訪問的服務器,你可以使用UNC路徑。喜歡的東西:

\\your-server-name\share\path\to\file.txt 

\\your-server-name.domain.com\c$\path\to\file.txt 

否則,您的Web服務器將不得不滿足了這些文件。您必須構建一個小型單頁面Web應用程序或採用相對路徑的HTTP處理程序,查看正在運行的文件系統的相應位置,將該文件作爲Streambyte陣列加載並寫出到響應流(具有適當的內容類型和長度標題)。 IIS需要能夠處理文檔的MIME類型。

客戶端必須在內存中保存它或將它寫入臨時地址,這可能會迫使您重新考慮您的CRC實現。所有這些都非常不安全(理論上你可以讓每個人訪問該服務器上的每個文件)。

或者,您可以創建需要比較虛擬目錄的文件的根文件夾,然後允許瀏覽該目錄(IIS設置)。然後像http://localhost/root/path/to/file.txt可能工作,但再次,不安全。

1

聽起來我喜歡這個文件在你的本地主機上進行測試,但是一旦你部署了,它將在服務器上。

如果是這樣的情況下,啓動與該文件的相對URL:_srcFile = /uploads/testfile.txt;

從這一點,使用Server.MapPath得到真正的位置:

var testFile = Server.MapPath(_srcFile); 

注:MapPath的中也被定義HttpServerUtility

相關問題