I’m trying to read some configuration in my global.aspx Application_Start method. When I read ConfigurationManager.GetSection("system.web/httpHandlers") everything is fine:
ConfigurationManager.GetSection(“system.web/httpHandlers”)
{System.Web.Configuration.HttpHandlersSection}
base {System.Configuration.ConfigurationSection}: {System.Web.Configuration.HttpHandlersSection}
Handlers: Count = 48
But when I read ConfigurationManager.GetSection("system.webServer/handlers") (which contains my custom handlers, it returns null. What am I doing wrong?
The section looks like this:
<system.webServer>
<handlers>
<add verb="*" path="*.loc" name="LocalizedResourceStreamer"
type="CFW.WebUI.HttpHandlers.LocalizedResourceStreamer,WebUI" />
</handlers>
</system.webServer>
Notes:
- Web.configs are nested,
ConfigurationManager.GetSectiontakes nesting into account by default. - The overall problem is trying to see if *.loc files are being served.
So far:

Looks like the system.webServer is ignored.
Depending on your OS/setup, the
system.webServerelement may be configured to be ignored – and so the config system will not be constructing any inner configuration items from it. E.g. on my machine (WinXP, IIS 5.1), it’s set to ignored by default.Check the
machine.configon the machine where this code is running, and see how thesystem.webServerelement is configured. I don’t have machines available with suitable later OSes at the moment, but it may be that this element is always set to be ignored – after all, that part of the config is for IIS’ use, rather than our own.