.NET tanker & tips

.Net, jQuery og andre nørdede emner

Transformation af web.config

November 01
by steffen 1. November 2013 13:57

Når man skal deploye en web applikation er der ofte en masse ændringer i web.config'en, fordi man benytter nogle bestemte indstillinger når man udvikler lokalt ift. hvad der skal bruges på produktionsserveren. Den mest oplagte er selvfølgelig at fjerne debug=true fra compilation elementet, samt at ændre connectionstring elementet, hvis man har siddet og udviklet op mod en test-database. 

Det sørger Visual Studio heldigvis for at klare på en nem og bekvem måde. I Solution exploreren kan man folde web.config ud, ligesom man kan med aspx-filer for at se deres codebehind. Når man gør det er der en web.release.config og en web.debug.config. Disse to filer bruges til at lave ændringer i web.config alt efter om man har valgt debug eller release, når man compiler projektet. Hvis du har flere compilation profiler, kan du få tilføjet én til hver af profilerne, ved at højreklikke på web.config og vælge "Add config transform".

Transformationsfilerne ligner meget en web.config, bare med mindre indhold. Man angiver de forskellige steder i web.config'en man gerne vil lave ændringer, ved at opbygge xml-strukturen lige som den ser ud i web.config. Det vil sige at hvis man f.eks. gerne vil ændre noget i en af elementerne under <connectionStrings>, skal der være de samme elementer som i web.config'en. 

<?xml version="1.0"?>
  <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <connectionStrings>
      <add name="database_connection"
        connectionString="Data Source=MySource;Initial Catalog=DbName;Persist Security Info=True;User ID=MyDbUser;Password=MyPassword"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
    <system.web>
      <compilation xdt:Transform="RemoveAttributes(debug)" />
    </system.web>
  </configuration>

Der er mange forskellige muligheder for at manipulere indholdet i web.config'en, men den mest normale er, som vist ovenfor, at man gerne vil benytte en anden connection string, når man deployer til produktionsmiljøet. Først skal XML-elementet findes (i dette tlifælde et givent add-element under connectionstring elementet). Man angiver dette vha. 'xdt:Locator' hvor man giver værdien 'Match(name)'. Det betyder at der matches på attributen 'name' på det pågældende element. Herefter angives det hvad man ønsker at gøre ved elementet og angives 'xdt:Transform', hvor man angiver værdien 'SetAttribute'. 

Man kan teste de forskellige transformationer ved at i Visual Studio højre klikke på den transformation man vil se (f.eks. filen web.release.config for at se release transformationen) og vælge 'Preview Transform'.

Tags:

ASP.NET | ASP.NET MVC