2014-06-12 12 views
6

mi collego ad un negozio blob programatically:Ottenere "StorageConnectionString" da ServiceRuntime: FAIL

string connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString"); 
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
... 

mie impostazioni App.Config sono:

<configuration> 
    <appSettings> 
    <add key="StorageConnectionString" 
     value="DefaultEndpointsProtocol=http;AccountName=ACNAME;AccountKey=MYKEY==" /> 
    </appSettings> 
... 

la connessione funziona. Tuttavia vedo il messaggio "Getting" StorageConnectionString "da ServiceRuntime: FAIL" sul mio test di unità locali:

enter image description here

Qual è il motivo di questo messaggio e come posso risolvere il problema?

risposta

10

Ho avuto lo stesso problema con Azure Table Storage, ma tutto funziona.

aggiungere al vostro web.config:

<connectionStrings> 
    <add name="ConnectionTableAzure" connectionString="DefaultEndpointsProtocol=https;AccountName=[ACCOUNTNAMEHERE];AccountKey=[ACCOUNTKEYHERE];TableEndpoint=[ENDPOINTHERE]"/> 
</connectionStrings> 

Sostituire:

storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("ConnectionTableAzure")); 

Con questo:

storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["ConnectionTableAzure"].ConnectionString); 
1

Le soluzioni precedenti funziona, ma vorrei espandersi più su esso.

Sostituisce i valori anche se il codice viene eseguito in produzione, tuttavia a volte si desidera veramente consentire a Azure di gestire la configurazione, mantenendo il controllo della finestra di output durante il debug.

Ho creato la seguente classe per aiutare con quello.

public static class CloudConfigurationManagerExt 
{ 
    public static string GetSetting(string configurationValue) 
    { 
#if DEBUG 
     return System.Configuration.ConfigurationManager.AppSettings[configurationValue]; 
#else 
     return Microsoft.Azure.CloudConfigurationManager.GetSetting(configurationValue); 
#endif 
    } 
} 

poi ho cambiato tutte le chiamate per CouldConfigurationManager.GetSetting al mio.

Da

string connStr = CloudConfigurationManager.GetSetting("Microsoft.AzureBlobStorage.ConnectionString"); 

Per

string connStr = CloudConfigurationManagerExt.GetSetting("Microsoft.AzureBlobStorage.ConnectionString"); 

aggiunto e l'impostazione nella parte appSetting del web.config o app.config come necessario.

web.config

<add key="Microsoft.AzureBlobStorage.ConnectionString" value="YourValueHere" /> 

Come si può vedere. Se si esegue in modalità di debug, ottiene il valore dall'appetting, altrimenti segue il percorso regolare per CloudConfigurationManager.GetSetting