1

Azure Blob Storage から Azure でホストされている Web サイトの "contents" フォルダーにファイルをコピーする必要がありますが、これを機能させるのに苦労しています。どんな助けでも大歓迎です。コードはローカル サーバーでは正常に動作しますが、Azure でホストすると失敗します。

これが私の機能です:


public bool CopyFromAzure(string myContainer, string fileName, string filePath)
    {
        // Retrieve storage account from connection string.
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
           ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

        // Create the blob client.
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        // Retrieve reference to a previously created container.
        CloudBlobContainer container = blobClient.GetContainerReference(myContainer);

        // Retrieve reference to a blob named "myblob".
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);

        try
        {
            // Save blob contents to a file. 
            // --> here is where an error happens !! on System.IO.File.Create
            // The value of "filePath" is: F:\sitesroot\0\Content\tmp\file_2cfe0a3d-fa7a-4ab4-a665-cdebd90567d4.pdf

            using(FileStream fs= System.IO.File.Create(@filePath))
            {
                blockBlob.DownloadToStream(fs);
            }
        }
        catch (Exception e)
        {
            return false;
        }

        return true;
    }

質問: これは、Azure または Web サイト構成のセキュリティ設定にリンクできますか?

ありがとう

4

1 に答える 1

2

問題は最終的に解決されました。何らかの理由で、Azure ディストリビューションのサブフォルダー (つまり、/Content/tmp) に対する書き込み権限が許可されていませんでした。プロジェクトのルートにファイルを書き込むだけで、pb を解決しました。

機能したコード:

            string filePath = HttpContext.Current.Server.MapPath("~/" + fileName);
            using (FileStream fs = System.IO.File.OpenWrite(filePath))
            {
                blockBlob.DownloadToStream(fs);
            }
于 2013-11-08T23:29:23.197 に答える