1

我有一个带有 WCF 服务作为 WebRole 的 Windows Azure 项目。我在 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 服务的方法。在这种情况下,除了 azure depoyment 服务已为您创建的目录之外,C 驱动器没有任何目录。如果您不想写入托管 Webrole 的 VM 上的磁盘(在这种情况下是 WCF 服务),则必须在 de *.csdef 配置中的启动任务中创建目录

您还必须将 directorys.cmd 文件添加到您的 wcf 项目中

请记住,在 Azure 回收 VM 期间,VM 本地磁盘上的任何数据都将丢失。

Azure 培训套件演示“WebAndWorkerRoleEnhancements”中的更多信息

米歇尔

于 2012-05-04T12:54:33.953 回答
1

我不肯定我会关注你的情况,所以回顾一下......

您的服务最初在本地工作,但现在您已部署到 azure 它不能。您正在从本地客户端使用您的 Web 服务(不是在 azure 上,尤其是在 Web 角色上)。

基于上述问题,您将本地文件路径传递到 azure,您的 webrole 正在尝试使用您的路径访问其自己的文件系统上的文件。要解决此问题,您需要将实际文件传递给 azure(而不仅仅是路径)。您可以使用流或字节数组。

于 2012-05-04T16:12:20.973 回答