Question

Je développe "application web d'azur".

J'ai créé des membres de statiques entraînement et drivePath dans WebRole comme suit:

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

J'ai créé lecteur de stockage de développement WebRole.OnStart comme suit:

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;

Le lecteur garde visible et accessible jusqu'à ce périmètre d'exécution restent dans WebRole.OnStart, dès que l'autorisation portée d'exécution WebRole.OnStart, le lecteur devient indisponible de l'application et les membres statiques obtenir reset (tels que drivePath se réglé sur « »)

Suis-je manque une configuration ou d'une autre erreur?

Était-ce utile?

La solution 2

J'ai trouvé la solution:

Dans la machine de développement, la demande provient de localhost, qui a fait un crash du système. Commentant tag "Sites" dans ServiceDefinition.csdef, résout le problème.

Autres conseils

Où est l'autre code où vous vous attendez à utiliser drivePath? Est-il dans une application web?

Si oui, utilisez-vous SDK 1.3? Dans SDK 1.3, le mode par défaut pour une application Web est de fonctionner sous IIS complet, qui en cours d'exécution dans un moyen domaine de l'application séparée de votre code RoleEntryPoint (comme OnStart), de sorte que vous ne pouvez pas partager des variables statiques entre les deux. Si tel est le problème, vous pouvez envisager de déplacer ce code d'initialisation Application_Begin à la place Global.asax.cs (qui est dans le domaine d'application de l'application Web).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top