Już jakiś czas temu pisałem o możliwości użycia configu podzielonego na wiele plików. Dziś pokaże jeden z przypadków użycia tej funkcjonalności.

Często zdarza się tak, że podczas rozwoju aplikacji używamy naszej lokalnej bazy danych. Czasem jednak chcemy aby inne osoby zobaczyły postęp prac. Aplikacja wrzucona na serwer zapewne będzie miała inny connection string niż ten lokalny. Oczywiście możemy mieć oba connection stringi w pliku web.config i je komentować odpowiednio, ale ponieważ trzeba o tym pamiętać staje się to trochę niewygodne.

Tak więc staremu rozwiązaniu mówimy nie.

Jak to można zrobić ładniej? Możemy wykorzystać fakt, iż web.config umożliwia nam wydzielenie pewnych fragmentów do osobnych plików.
W głównym web.configu, umieśćmy tylko sekcję connectionStrings i dodajmy odwołanie do pliku zewnętrznego.

<connectionStrings configSource=connectionStrings.config>

No i oczywiście utworzyć go. W środku dodajemy nasz lokalny connectionStrings.config.

xml version=1.0?>

<connectionStrings>

  <add name=ApplicationServices

      connectionString=Server=.\SQLExpress;Database=;Trusted_Connection=True;

      providerName=System.Data.SqlClient/> 

connectionStrings>

Pozostaje nam jeszcze wyłącczyć ten plik z projektu, aby nie był kopiowany na serwer przy Deploy’u. Oczywiście na serwerze tworzymy taki sam plik z connection stringiem wskazującym na bazę danych na serwerze. I działa.

W ASP.NET 4.0 zmieni podejście do tego wprowadzając transformacje, które będziemy mogli wykonywać na web.configu. Do tego czasu pozostaje nam powyższa metoda lub … no właśnie. Być może jest jakiś inny, lepszy sposób na osiągnięcie tego samego o którym nie wiem? Zapewne jest. Jeśli go znasz napisz w komentarzu…