2012-05-04 78 views
1

我有一個WCF服務作爲WebRole的Windows Azure項目。 我在Azure中有一個存儲帳戶,我想在其上保存文件。Azure WCF服務在BLOB存儲文件上給出錯誤

我的代碼在我使用Azure模擬器進行測試時發揮作用。

但是知道我有一個錯誤:

Could not find a part of the path 'C:\temp\BatchAzure.log'. 

客戶方的服務,我試圖執行:

string path = @"C:\temp\BatchAzure.log"; 
    var test = service.SaveGezichtBestand(path, "999999"); 

的方法我用:

public bool SaveGezichtBestand(string filePath, string memberID) 
     { 
      bool result = false; 

      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
      RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); 

      CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

      // Retrieve a reference to a container 
      CloudBlobContainer container = blobClient.GetContainerReference("facefileblobcontainer"); 

      // Create the container if it doesn't already exist 
      container.CreateIfNotExist(); 

      //By default, the new container is private, so you must specify your storage account key (as you did above) 
      //to download blobs from this container. 
      container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); 

      // Retrieve reference to a blob named "myblob" 
      CloudBlob blob = container.GetBlobReference(memberID); 

      try 
      { 
       // Create or overwrite the "myblob" blob with contents from a local file 
       using (var fileStream = System.IO.File.OpenRead(filePath)) 
       { 
        blob.UploadFromStream(fileStream); 
        result = true; 
       } 
      } 
      catch (Exception) 
      { 
       result = false; 
       throw; 
      } 

      return result; 
     } 

回答

1

! [請在此輸入圖片] [1]您好

我假設SaveGezichtBestand方法是在WindowsAzure上運行的wcf服務的一種方法。在這種情況下,C驅動器沒有任何其他目錄,而是天藍色的服務爲您創建的目錄。如果你不會寫在承載您的Webrole(TIS中的情況下,WCF服務)的虛擬機磁盤必須在德* .csdef configation建立在你的啓動任務 目錄

您還可以到directorys.cmd文件添加到您的WCF項目

Remeber該VM中的localdisks任何數據將由Azure的虛擬機的循環過程中丟失。在Azure中traings套件演示

更多信息「WebAndWorkerRoleEnhancements」

米希爾

1

我還不能肯定我按照你的情況可以這麼概括...

你的服務,最初的工作在當地,但現在你已經部署到天藍了,但它沒有。您正在使用本地客戶端的Web服務(不是基於Azure,特別是不在Web角色上)。

基於上述問題,您正在將本地文件路徑傳遞至azure,您的webrole正嘗試使用您的路徑在其自己的文件系統上訪問該文件。爲了解決這個問題,你需要將實際的文件傳遞給azure(而不僅僅是路徑)。您可以使用流或字節數組。