Pregunta

estoy desarrollando "aplicación web azul".

He creado los miembros estáticos de accionamiento y drivePath en WebRole de la siguiente manera:

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

He creado la unidad de almacenamiento en el desarrollo WebRole.OnStart de la siguiente manera:

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;

La unidad mantiene visibles y accesibles hasta que alcance la ejecución permanecen en WebRole.OnStart, tan pronto como se alcance la ejecución WebRole.OnStart licencia, accionamiento de estar disponible a partir de la aplicación y los miembros estáticos reconfiguradas (como drivePath conseguir en "")

Me estoy perdiendo algo de configuración o algún otro error?

¿Fue útil?

Solución 2

I encontró la solución:

En la máquina de desarrollo, la solicitud se originó para localhost, lo que hacía que el sistema se bloquee. Al comentar "Sitios" en la etiqueta ServiceDefinition.csdef, resuelve el problema.

Otros consejos

¿Dónde está el otro código en el que está esperando para usar drivePath? ¿Está en una aplicación web?

Si es así, ¿está utilizando SDK 1.3? En SDK 1.3, el modo por defecto para una aplicación web es que se ejecute en plena IIS, lo que significa que se ejecutan en un dominio de aplicación separada de su código RoleEntryPoint (como OnStart), por lo que no puede compartir variables estáticas a través de los dos. Si este es el problema, es posible considerar mover el código de inicialización a Application_Begin en Global.asax.cs lugar (que está en el dominio de aplicaciones de la aplicación web).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top