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 :)