2014-06-12 16 views
6

podłączyć do sklepu blob programowo:Pierwsze "StorageConnectionString" z ServiceRuntime: FAIL

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

Moi App.Config ustawienia:

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

Połączenie działa. Jednak widzę komunikat „Uzyskiwanie” StorageConnectionString „z ServiceRuntime: FAIL” na moich lokalnych testów jednostkowych:

enter image description here

Co jest przyczyną tego komunikatu i jak mogę to naprawić?

Odpowiedz

10

Miałem ten sam problem z Azure Table Storage, ale wszystko działa.

Dodaj do web.config:

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

Wymienić:

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

Przez to:

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

Dotychczasowe rozwiązania działa, ale chciałbym, aby rozwinąć się bardziej na to.

Zastępuje wartości, nawet jeśli kod jest uruchamiany podczas produkcji, ale czasami naprawdę chcesz, aby Azure obsługiwała konfigurację, zachowując kontrolę nad oknem wyjściowym podczas debugowania.

Utworzyłem następującą klasę, aby pomóc w tym.

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 
    } 
} 

następnie zmieniłem wszystkie wywołania do CouldConfigurationManager.GetSetting do kopalni.

Z

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

do

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

i dodano ustawienie w części AppSetting z Web.config app.config lub w razie potrzeby.

web.config

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

Jak widać. Jeśli używasz trybu debugowania, pobiera on wartość ze składu, w przeciwnym razie postępuje zgodnie ze zwykłą ścieżką do CloudConfigurationManager.GetSetting