I am currently supporting an application running on SharePoint 2007 and have run in to a problem with the order of httpModules.
I've written a module that initiates context needed by our role provider and it needs access to the address of the current web to do that. This is not a problem when handling normal page requests since I can look at the Url in the request object. But the SPRequest module rewrites this for service calls (e.g http://dev.local/sites/page/_layouts... becomes http://dev.local/_layouts...) and I no longer have access to the original url.
So what I'm looking for is a good way to either position my module before SPRequest in web.config (SPWebConfigModifications does not allow you to specify position as far as I'm aware) or some other way of retrieving the original requested url during the BeginRequest event.
Modules section of web.config
<httpModules> <clear /> <!-- This is where I would like to place a custom module --> <add name="SPRequest" type="Microsoft.SharePoint.ApplicationRuntime.SPRequestModule, Microsoft.SharePoint, Version=184.108.40.206, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" /> <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" /> <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" /> <add name="RoleManager" type="System.Web.Security.RoleManagerModule" /> </httpModules>
Was hoping that it would be possible to insert this when creating the SP application by using .config extensions but was once again unable to find a way to insert at a specific location.