Learn IIS 7 - IIS 7.x's Configuration System


Notes from Scott Forsyth's session "IIS 7.x's Configuration System" in his 52-week video lesson series  -

- IIS 7.x drastically different from IIS 6

- IIS 6 - IIS path (Metabase.xml) & .NET path (machine.config, web.config (root, site, app))

- Metabase.xml - app pools, site config, mime types, compression, various settings like default document

- 2 paths have merged & .NET becomes a first class citizen in IIS 7.x


- IIS 7.x - Distributed & Delegated Config system

- applicationHost.config (kind of replaces metabase.xml, guts of IIS) & administration.config (IIS Manager related settings) host most of the settings of IIS. Both files are in the %windir%\System32\inetsrv\config\ folder

- lot of settings related to not just .NET but also IIS config settings can live in the web.config or app web.config files

- Settings managed by IIS admin can also be managed by the development team as well.

- Feature Delegation - what settings are allowed to be applied in the config files vs. what has to be set at the global level. Every setting or config section has a decision on whether it is Read/Write- can't be delegated or whether it's read-only.

+ Benefits of Distributed Config
- Developers have more control of IIS settings - delegated management
- IIS configuration saved in source control
- Easier to maintain when migrating
- Websites packaged for consistent deployments - some settings may not work as they are not delegated

+ Gotcha's of Distributed Config
- Easy to overwrite existing settings
- AppDomain recycle
- Configuration is "all over the place" (aplicationHost.config, web.config files of site)
- Not replicated with shared config

- Lines are blurred between IIS & ASP.NET

Related: Getting Started with IIS Manager