Různé web.configy na lokálu a na serveru

Tomáš Herceg       15. 8. 2008       ASP.NET/IIS       6903 zobrazení

Pokud se zabýváte vývojem aplikací v ASP.NET a máte již pár web napsaných a nasazených na serveru, určitě znáte ten problém, že na serveru a na lokálním testovacím stroji nejsou soubory web.config s konfigurací aplikace úplně stejné. Liší se v nich nejčastěji connectionStringy, ale většinou i další věci, jako třeba element compilation či customErrors. Pokud do konfigurace něco přidáváme, musíme to tedy přidávat na dvě místa - jednak do svého lokálního web.configu a jednak do web.configu na serveru. Velmi často se ale stane, že to někam přidat zapomenete, a problém je na světě. Jak z toho ven?

Existuje více různých řešení, já odobně používám pomocí atributu configSource. Ten můžete přidat libovolné sekci konfigurace a říct, že tato sekce se konfiguruje v jiném souboru. Protože na serveru a localhostu mám jiné connectionStringy, udělal jsem si soubor web2.config, do kterého jsem uložil jen sekci connectionStrings:

Soubor web2.config

 <?xml version="1.0"?>
<
connectionStrings>
     <
add name="webtridyConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=webtridy;Integrated Security=True" providerName="System.Data.SqlClient" />
</
connectionStrings>

Tento soubor mám různý na serveru a na lokálním stroji, ale na něm se nic nemění. U sebe mám připojovací řetězec k testovací databázi, na serveru mám v tomto souboru připojovací řetězec k ostré.

Soubor web.config

Tady jsem místo uvedení connectionStringů natvrdo odkázal na soubor web2.config:

   ...
 
<appSettings />

<
connectionStrings configSource="web2.config"/>

...

Podobně to je se sekcemi compilation (u sebe mám debug nastaven na true, na serveru na false) a customErrors (na serveru se při chybě zobrazí generická stránka s chybovým hlášením, na lokále si samozřejmě nechám přesnou chybu vypsat). Jen je nutno podotknout, že každá takto externě nadefinovaná sekce musí být v jiném souboru, mám tedy ještě soubory web3.config a web4.config, všechny jsem je dal do složky _Configuration, aby mi nepřekážely v kořenovém adresáři aplikace a abych si je náhodou nepřepsal při uploadu na FTP.

Výhodou je, že když potřebuji udělat změnu v konfiguraci, v drtivé většině se týká souboru web.config (connectionStringy a adresy chybových hlášek během vývoje neměním). Tento soubor je ale stejný na webu i na lokálním testovacím nasazení, takže změnu provádím na jednom místě.

Není to nic světoborného, předpokládám, že jste o tomto nebo jiném způsobu věděli, ale třeba se najde někdo, komu se tento článek hodit bude.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback