W przypadku parametrów połączenia rzeczywiście można wskazać udostępniony plik. Jeśli udostępniony plik znajduje się w sieci UNC, wymaga uprawnień administracyjnych na komputerze, na którym będzie hostowana aplikacja.
Rozwiązanie: w pliku web.config użyj configSource, aby wskazać lokalny plik konfiguracyjny. Ze względu na ograniczenia .Net musi znajdować się na poziomie lub poniżej poziomu głównego pliku konfiguracyjnego. Po prostu wskazuję plik w samym folderze aplikacji:
<connectionStrings configSource="ConnectionStrings.config" />
W udostępnionej lokalizacji, do której użytkownik puli aplikacji ma dostęp, dodaj plik konfiguracyjny zawierający parametry połączenia współużytkowanego. Ten plik nie może zawierać żadnego kodu XML poza samą sekcją connectionStrings. Udostępniony plik ConnectionStrings.config wygląda następująco:
<connectionStrings>
<clear/>
<add name="connString1" connectionString="connString1 info goes here"/>
<add name="connString2" connectionString="connString2 info goes here"/>
</connectionStrings>
Teraz sztuczka. Utwórz łącze symboliczne systemu Windows w folderze aplikacji wskazujące na zewnętrzny, udostępniony plik konfiguracyjny. Aby to zrobić, będziesz potrzebować uprawnień administratora:
mklink ConnectionStrings.config \\someServer\someShare\someFolder\ConnectionStrings.config
Właśnie przechytrzyliśmy .Net. System konfiguracji użyje ustawienia configSource, aby znaleźć parametry połączenia w pliku lokalnym o nazwie ConnectionStrings.config. Dowiązanie symboliczne wygląda jak plik do .Net, a dowiązanie symboliczne jest rozpoznawane we współdzielonym pliku konfiguracyjnym.
Ostrzeżenia: zmiany w udostępnionym pliku nie powodują automatycznego ponownego uruchomienia aplikacji w .Net. W przypadku usług IIS witrynę sieci Web lub pulę aplikacji trzeba będzie ponownie uruchomić ręcznie.
Ze względu na konieczność posiadania uprawnień administracyjnych do tworzenia dowiązania symbolicznego to podejście może nie działać dla wszystkich. Istnieją dwie powiązane alternatywy, które mogą działać, jeśli udostępniony plik znajduje się na tym samym dysku logicznym - twarde łącza i połączenia. Zobacz tę i tę dyskusję, aby uzyskać więcej informacji.