ASP.NET 4: fogyókúrán a web.config

Aki hosszabb ideje foglalkozik már az ASP.NET-tel, annak biztosan feltűnt, hogy minden verzióval jelentősen hízott a web.config. Elég csak létrehozni egy új webhelyet Visual Studioban és kapunk egy több képernyős konfig fájlt, ami ráadásul szinte minden webalkalmazásnál ugyanaz. A beállítások többségéhez többnyire hozzá sem nyúlunk (tegye fel a kezét, aki kiszedte a .vb fájlok fordítására vonatkozó beállításokat egy C# projektből), viszont nap mint nap kerülgetjük. A helyzet az IIS 7-tel csak “rosszabbodott”, hiszen Windows Server 2008-on már a webkiszolgáló beállításai is a web.configba kerülnek.

Erre a problémára úgy látszik Redmondban is felfigyeltek, mert a .NET Framework 4-től kezdve a beállítások nagy része átkerül a machine.config fájlba és az ott szereplő értékeket az egyes webalkalmazások öröklik. Ez a gyors fogyókúra alapesetben ennyire fogja redukálni a web.configot (béta 2 példa – változhat):

  <?xml version="1.0"?>
  <configuration>
    <system.web>
      <compilation targetFramework="4.0" />
    </system.web>
  </configuration>

Sőt, ha a webalkalmazásunk .NET Framework 4 application poolban fut, akkor a fenti “4.0” az alapértelmezett targetFramework érték, tehát akár üres is lehet a web.configunk.

Ami már most is működik

Van éppen egy projektünk, amiben az IIS 7 UrlRewrite modulját használjuk. Nagyon jó eszköz, azonban alapértelmezés szerint ez is a web.configba pakolja a létrehozott szabályokat, ami a mi esetünkben jelen pillanatban közel 200 sor és ez a szám gyors ütemben növekszik. Ezért azt a megoldást választottuk, hogy a szabályokat kitettük külön .config fájlba a configSource attribútum használatával. A web.configban a modul által használt rewrite szekcióból ez maradt:

  <rewrite>
    <rules configSource="web_rewrite_rules.config" />
  </rewrite>

A web_rewrite_rules.config fájl pedig így kezdődik:

  <?xml version="1.0" encoding="UTF-8"?>
  <rules>
    <rule ...>
      ...
    </rule>
...
</rules>

Ez a módszer tökéletesen működik .NET Framework 3.5 és IIS 7.5 (Windows 7) alatt, az IIS Management Console felismeri a configSource attribútumot és a grafikus felületen végzett módosításokat a külső fájlba írja. Eddig egy mellékhatást tapasztaltunk: a hivatkozott külső fájl módosítása esetén nem indul újra automatikusan a webalkalmazás és mivel a beállítások gyorsítótárban tárolódnak, a rendszer észre sem veszi, hogy változtattunk valamin. Az már a konkrét helyzettől függ, hogy ez éppen előny vagy hátrány.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s