Two common reasons for breakpoints not being hit in an HttpModule are:
The breakpoint is in code that is called during the module's construction.
This one always get's me. If you want to debug the module's construction you should manually attach the debugger.
To do this on Windows 7 (it'll be similar on Vista):
- Debug | Attach to Process...
- Check Show processes in all sessions.
- Select the your worker process instance (w3wp.exe)
- Click Attach.
Refresh your browser and you should now hit your breakpoint.
The module is not actually being loaded because of a configuration issue.
If you can tell that the module code is definitely being executed then this is not the problem. But sometimes, while a module is loading fine on other machines it might not be loading on your dev box because you have a different version of IIS and you don't have the necessary config.
If this is the the case then make sure the module is wired up correctly for all required versions of IIS.
For IIS 5.1 and IIS 6...
<system.web>
<httpModules>
<add name="CustomHttpModule" type="MyCustomHttpModule"/>
</httpModules>
</system.web>
...and for IIS 7+
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="CustomHttpModule" type="MyCustomHttpModule"/>
</modules>
</system.webServer>