Debugging initialization modules
I have covered the new initialization system as introduced with EPiServer CMS 6 and EPiServer Community 4 in previous blog posts. See http://world.episerver.com/Blogs/Magnus-Strale/Dates/2009/12/The-new-initialization-system---How-to-write-an-initialization-module-and-advanced-topics/ Just back from a long summer vacation, one of the first tasks was related to a new initialization module and I just wanted to do a quick “debug exploration” before starting on the work proper.
However I utterly failed to get the debugger to halt on a breakpoint in the initialization module. After a coffee I realized that the problem was that the initialization modules execute before the debugger actually hooks up to the process due to the initialization code being invoked from the HttpApplication constructor (actually the EPiServer.Global constructor).
However there is a simple workaround:
- Open the EPiServerFramework.config file.
- Remove the <automaticSiteMapping> section.
- Save the file.
- Set your breakpoints in VisualStudio.
- Start your EPiServer web app from VisualStudio.
You will now get the debugger to break, since the initialization system will now abort on the first invocation and delay execution until the first BeginRequest, and at that stage the debugger is attached and functional.
Note that the file EPiServerFramework.config will be automatically updated so you might want to set it to read-only to avoid having to edit it constantly.
This just saved me a lot of time. Thanks very much!
In recent versions of Episerver the automaticSiteMapping-section has been removed. A working method using IIS start/stop can be found here:
http://jondjones.com/learn-episerver-cms/episerver-developers-guide/episerver-initialization-module/how-to-debug-an-episerver-scheduled-job-or-initialization-module