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