Veľmi príjemnou zmenou v ASP.NET 4 je nový web.config súbor, ktorý podstatne schudol a normálne obsahuje iba 2 potrebné direktívy. Od .NETu 2.0 web.config postupne rástol s každou novou verziou (3.0, 3.5, 3.5 SP1), pretože pôvodný machine.config z 2.0 verzie sa nemenil, ale nové funkcie a ich nastavenia pribúdali rapídne.
Všetko čo potrebujeme určiť je použitá verzia frameworku a nastaviť IIS, aby používal ASP.NET moduly.
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> </configuration>
Druhou novinkou je správa rôznych konfigurácii web aplikácie priamo v projekte. Doteraz bol v projekte jeden Web.config súbor, ktorý sa používal hlavne počas vývoja a pri nasadení aplikácie do produkčného prostredia bolo potrebné vytvoriť iný konfiguračný súbor a ten udržiavať samostatne. Problém bol aj s verziovaním nastavení ktoré mal každý vývojar iné. Teraz máme k dispozícii transformačné konfiguračné súbory.
Visual Studio v nových projektoch vytvorí základný Web.config súbor a k nemu dve ďalšie verzie: Web.Debug.config a Web.Release.config. Základný konfiguračný súbor sa použivá rovnako ako doteraz – nastavíte v ňom všetko potrebné pre beh webovej aplikácie. Nové Debug a Release konfiguračné súbor slúžia na popísanie zmien v ladiacej a produkčnej verzii. Ich syntax je presne taká istá ako v normálnych Web.config súboroch. Používajú však XML-Document-Transform rozšírenie, čo sú špeciálne XML atribúty, ktoré určujú, ako budú zmeny aplikované.
Transformácie XML dokumentu umožňujú pridať či odstrániť určité XML elementy a atribúty, nahradiť celý XML element úplne novým elementom, ale aj využiť XPath výrazy na definovanie podmienok, za akých má dôjsť z aplikovaniu zmien.
Typicky je teda v Release verzii odstránený debug="" atribút a nastavený connection string na produkčnú databázu:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> <system.web> <compilation xdt:Transform="RemoveAttributes(debug)" /> </system.web> </configuration>
Samuraj says:
Ano – tato zmena ked som ju videl prvy krat ma potesila – nebudem prezradzat ktore samurajske web servre bezia pod debug web configom len koli lenivosti :)