1

请帮我。我正在编写以下代码来挂载 vhd 文件。但我无法安装它。它在本地运行良好,但是当我将它部署在 azure 服务器上时,webrole 仍然处于脱机状态。我尝试通过删除下面的 foreach 块但徒劳无功。但是当我删除代码“Global.driveLetter = drive.Mount(localCache.MaximumSizeInMegabytes - 20, DriveMountOptions.Force);”时 角色已在服务器上准备就绪。但我不能这样做,因为这是安装驱动器的关键语句。

会有什么问题?

    private static void MountAzureDrive()
    {
        string connectionStringSettingName = "AzureConnectionString";
        string azureDriveContainerName = "azuredrives";
        string azureDrivePageBlobName = Guid.NewGuid().ToString("N").ToLowerInvariant();
        string azureDriveCacheDirName = Path.Combine(Environment.CurrentDirectory, "cache");

        CloudStorageAccount.SetConfigurationSettingPublisher((a, b) =>
        {
            b(RoleEnvironment.GetConfigurationSettingValue(connectionStringSettingName));
        });

        //CloudStorageAccount storageAccount=CloudStorageAccount.FromConfigurationSetting(connectionStringSettingName);
CloudStorageAccount storageAccount=CloudStorageAccount.DevelopmentStorageAccount;

        LocalResource localCache=RoleEnvironment.GetLocalResource("InstanceDriveCache");
        CloudDrive.InitializeCache(localCache.RootPath + "cache", localCache.MaximumSizeInMegabytes);

        // Just checking: make sure the container exists
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        blobClient.GetContainerReference("drives").CreateIfNotExist();

        // Create cloud drive
     //WebRole.drive=storageAccount.CreateCloudDrive(blobClient.GetContainerReference("drives").GetPageBlobReference("Test.VHD").Uri.ToString());
        WebRole.drive = storageAccount.CreateCloudDrive("drives/Test.VHD");

        try
        {
            WebRole.drive.CreateIfNotExist(512);
        }
        catch (CloudDriveException ex)
        {
            // handle exception here
            // exception is also thrown if all is well but the drive already exists
        }

        foreach (var d in CloudDrive.GetMountedDrives())
        {
            var mountedDrive = storageAccount.CreateCloudDrive(d.Value.PathAndQuery);
            mountedDrive.Unmount();
        }
        //Global.driveLetter = drive.Mount(25, DriveMountOptions.Force);
        Global.driveLetter = drive.Mount(localCache.MaximumSizeInMegabytes - 20, DriveMountOptions.Force);
    }

提前致谢。

4

1 回答 1

1

也许这是显而易见的,但是......当您部署到 Windows Azure 时,您是否从开发存储更改了存储帐户?您有硬编码的 dev 存储模拟器:

CloudStorageAccount storageAccount=CloudStorageAccount.DevelopmentStorageAccount;

于 2012-05-18T03:23:58.883 回答