1

WebRoleとしてWCFサービスを使用するWindowsAzureプロジェクトがあります。Azureにファイルを保存したいストレージアカウントがあります。

私のコードは、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;
        }
4

2 に答える 2

1

![ここに画像の説明を入力してください][1]こんにちは

SaveGezichtBestandメソッドは、WindowsAzureで実行されるwcfサービスのメソッドであると想定しています。その場合、Cドライブには、azuredepoymentサービスが作成したディレクトリ以外のディレクトリはありません。Webrole(この場合はWCFサービス)をホストしているVM上のディスクに書き込みを行わない場合は、起動タスクでde*.csdef構成のディレクトリを作成する必要があります。

また、directorys.cmdファイルをwcfプロジェクトに追加する必要があります

AzureによるVMのリサイクル中に、VMのローカルディスク上のデータが失われることを忘れないでください。

Azuretraingsキットのデモ「WebAndWorkerRoleEnhancements」の詳細

ミシエル

于 2012-05-04T12:54:33.953 に答える
1

私は前向きではないので、要約すると...

サービスは元々ローカルで機能していましたが、Azureにデプロイしたため、機能しません。ローカルクライアントからWebサービスを利用しています(Azureではなく、特にWebロールではありません)。

上記に基づいて、問題は、ローカルファイルパスをazureに渡しており、Webロールが自分のパスを使用して独自のファイルシステム上のファイルにアクセスしようとしていることです。これを修正するには、実際のファイルを(パスだけでなく)azureに渡す必要があります。ストリームまたはバイト配列を使用できます。

于 2012-05-04T16:12:20.973 に答える