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:
ConfigurationManager.GetSection
takes nesting into account by default.So far: Looks like the system.webServer is ignored.
Depending on your OS/setup, the system.webServer
element 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.config
on the machine where this code is running, and see how the system.webServer
element 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.