Лазурное чтение установлен VHD - PullRequest
0 голосов
/ 24 декабря 2010

Я занимаюсь разработкой "лазурного веб-приложения".

Я создал статические элементы drive и drivePath в WebRole следующим образом:

public static CloudDrive drive = null;
public static string drivePath = "";

Я создал диск хранения разработки в WebRole.OnStart следующим образом:

LocalResource azureDriveCache = RoleEnvironment.GetLocalResource("cache");
        CloudDrive.InitializeCache(azureDriveCache.RootPath, azureDriveCache.MaximumSizeInMegabytes);

        CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
        {
            // for a console app, reading from App.config
            //configSetter(ConfigurationManager.AppSettings[configName]);
            // OR, if running in the Windows Azure environment
            configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
        });

CloudStorageAccount account = CloudStorageAccount.DevelopmentStorageAccount;
            CloudBlobClient blobClient = account.CreateCloudBlobClient();
            blobClient.GetContainerReference("drives").CreateIfNotExist();
            drive = account.CreateCloudDrive(
                blobClient
                .GetContainerReference("drives")
                .GetPageBlobReference("mysupercooldrive.vhd")
                .Uri.ToString()
            );
            try
            {
                drive.Create(64);
            }
            catch (CloudDriveException ex)
            {
                // handle exception here
                // exception is also thrown if all is well but the drive already exists
            }

string path = drive.Mount(azureDriveCache.MaximumSizeInMegabytes, DriveMountOptions.None);
            IDictionary<String, Uri> listDrives = Microsoft.WindowsAzure.StorageClient.CloudDrive.GetMountedDrives(); 
            drivePath = path;

Диск остается видимым и доступным до тех пор, пока область выполнения не останется в WebRole.OnStart, как только область выполнения выйдет из WebRole.OnStart, диск станет недоступным из приложения, а статические члены получат сброс (например, для drivePath установлено значение "")

Я пропустил какую-то конфигурацию или другую ошибку?

Ответы [ 2 ]

1 голос
/ 25 декабря 2010

Где другой код, где вы ожидаете использовать drivePath? Это в веб-приложении?

Если да, то используете ли вы SDK 1.3? В SDK 1.3 режим по умолчанию для веб-приложения состоит в том, чтобы запускаться под полным IIS, что означает запуск в отдельном домене приложения из кода RoleEntryPoint (например, OnStart), поэтому вы не можете совместно использовать статические переменные между ними. Если это проблема, вы можете вместо этого переместить этот код инициализации в Application_Begin в Global.asax.cs (который находится в домене приложения веб-приложения).

0 голосов
/ 29 декабря 2010

Я нашел решение:

На компьютере разработчика запрос отправляется для localhost, который приводил к сбою системы. Комментирование тега «Сайты» в ServiceDefinition.csdef решает проблему.

...