6

Mam aplikację ASP.NET MVC 3 działającą na platformie Azure. Używa również SQL Azure do bazy danych.Zarządzanie wieloma plikami web.config dla aplikacji MVC3 Azure

Chcę wdrożyć tę aplikację w różnych instancjach (testowanie, demonstracja, wiele produkcji), a każda instancja potrzebuje własnej unikatowej bazy danych SQL.

Wiem, że dzięki nowej aktualizacji Azure Tools można zarządzać konfiguracjami wielu usług. To jest świetne i prawie rozwiązuje mój problem. Jedyny problem dotyczy ciągów połączenia SQL w plikach web.config w części projektu MVC.

Chcę dokładnie taką samą funkcjonalność, jak w przypadku funkcji Konfiguracje wielu usług, ale zrobić to dla ciągów połączenia SQL.

Dzięki za pomoc !!

Odpowiedz

5

.Net configuration transformations powinien wykonać zadanie. Podobnie jak w przypadku usług Azure Service Configurations, oddzielny plik Web.ConfigurationName.config jest tworzony dla każdej instancji, w której ma zostać wdrożone. Budowanie rozwiązania za pomocą właściwej konfiguracji (testowanie, demo itp.) Wstawi prawidłowe wartości konfiguracyjne "instancji" do pliku Web.config.

+0

Jest to podejście, z którego korzystam i działa dobrze. –

+0

Jak możesz szczerze polecić zapisywanie transformacji XLS na swoich plikach konfiguracyjnych? Pliki konfiguracyjne są już wystarczająco dużym bagnem. –

3

Generalnie utrzymuję ciągi połączeń SQL w plikach ServiceDefinition. *. Cscfg. W ten sposób zyskujesz dodatkową zaletę, że możesz je edytować w działających instancjach, co jest świetne do robienia zamiany VIP.

Jeśli testujesz poza emulatora na maszynach rozwoju, jest to dość proste do napisania abstrakcji nad config:

class AzureConfig : IConfig 
{ 
    public string GetConnectionString(string name) 
    { 
    get 
    { 
     return RoleEnvironment.GetConfigurationSettingsValue(name); 
    } 
    } 
} 

class OnPremConfig : IConfig 
{ 
    public string GetConnectionString(string name) 
    { 
    get 
    { 
     return ConfigurationManager.ConnectionStrings[name].ConnectionString; 
    } 
    } 
} 

Następnie skonfigurować kontener IoC, by sprawdzić RoleEnvironment.IsAvailable i powrócić odpowiedniego typu.

Powiązane problemy