2016-09-21 69 views
1

我有兩個Azure服務器(Web應用程序)。我已經編寫代碼將圖像文件上傳到同一臺服務器。使用C#將文件從另一個Azure服務器寫入Azure服務器

下面是代碼:

byte[] bytes = Convert.FromBase64String(_base64String); 
    string path = Server.MapPath("../../assets/Upload/"); 

    FileInfo file = new FileInfo(path); 
    file.Directory.Create(); 

    File.WriteAllBytes(path + "Test.jpg"), 

此代碼是完全爲同一臺服務器的工作。我應該如何在另一臺服務器上寫入相同的文件

現在我需要從Azure的服務器A中文件寫入到Azure的服務器B.

+0

你是什麼意思*服務器A *和*服務器B *?你是指多個Web應用程序實例(例如'myapp.azurewebsites.net'的兩個實例)?或者你是否在討論將文件從'myapp1.azurewebsites.net'複製到'myapp2.azurewebsites.net'? –

+0

我認爲你應該看看使用Blob存儲。比寫一個網頁服務器更合理。 – Jamie

+0

@DavidMakogon:我正在討論使用存儲在myapp1.azurewebsites上的web服務將文件從'myapp1.azurewebsites.net'複製到'myapp2.azurewebsites.net'。淨' –

回答

0

每個Web App有自己的獨立存儲,在相同的應用程序服務計劃託管時也是如此。所以,你不能直接在兩個獨立的網絡應用程序之間複製文件。

既然你提到你有一個Web服務運行在你的一個Web應用程序中,沒有什麼能阻止你設計一個服務方法,其他Web應用程序調用一個API來傳輸文件。但是,這可能會影響性能,具體取決於文件大小。

如果共享的網絡應用程序之間的內容是很重要的,也有內置支持此存儲選項:

  • Azure的文件存儲(主要是通過Azure的Blob存儲支持SMB共享)。這是持久的存儲空間,可以跨Web應用程序共享。
  • Azure blob。同樣,這種存儲可以跨Web應用程序共享,但blob將需要使用Azure存儲REST API(或用於您選擇的語言的SDK)。

你選擇的方法完全取決於你和你的應用程序的設計。

0

你不能做到這一點,如果你想分享的2臺服務器之間的一些信息,然後使用Azure的隊列

+0

爲什麼選擇Azure隊列?如果文件大小> 64K,它們不能存儲整個文件。所以現在你必須將內容推送到一個blob,然後發送一個隊列消息。 –

+0

@David Makogon確切地說,隊列只是爲了通知其他Web應用程序文件已被複制 –

0

現在我需要從Azure的服務器A中文件寫入到Azure的服務器B.

根據您的要求,我認爲您可以通過FTP將文件上傳到目標Web應用程序。如果是這樣,你可以按照這個tutorial關於如何使用FTP上傳文件。

注意:對於Ftp主機名和憑據,您可以登錄到Azure門戶網站,選擇您的網站,單擊Overview頁面中的Download publish profile鏈接。

此外,爲了長期考慮,您最好將文件存儲在中心位置。這是在應用程序之間共享文件和擴展Web應用程序的理想方法。正如David所說,你可以選擇Azure File或Azure Blob。您可以按照此tutorialtutorial開始使用Azure文件& Blob存儲。