Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IIS7: disabling HttpModule in subapplication - sites, application and virtual directories

I have a few aspx files in a "Cache" folder in my application and I do not want HttpModules to run for those files in that folder. I tried having a web.config in subdirectory but learned that HttpModules take the root web.config and not that of the subdirectory. Reference 1, Reference2. So I decided to have this directory as a sub application as per suggestion here and here.

So I configure my application,then "add application" , map it to this directory, which already was inside this application and boom, it fails. It works for a static html file, but aspx files are not available.

My question is, how do I configure a sub-application in IIS7 so that the sub-application can have its own web.config and there I can disable HTTPModules of the root application

Edit:In fact I tried creating a subapplication within my main application and it did not work. Can some one point me to any article on how to configure a sub-application in IIS7 ?

Edit2: adding the error image. So how should I configure the child app pool. The child app runs in the same app pool as that of parent

Edit3: sorry, the child was running on a different app pool. A generic app worked(without modules). I am marking the answer after I try out the modules.Thanks for your help guys. There is something specific in my parent app web.config, which I am going to hunt down now.

alt text

EDIT: Actually both the answers provided below are correct. If you are using IIS7 integrated mode your modules should be in system.webServer and if IIS7 - classic mode your modules (and handlers?) should be in system.web

like image 318
ram Avatar asked Jan 29 '10 17:01

ram


2 Answers

JKG has the right answer for IIS6, but the syntax is a little different in IIS7:

<system.webServer>
  <modules>
    <remove name="MyModule"/>
  </modules>
</system.webServer>
like image 121
Matt Connolly Avatar answered Sep 17 '22 11:09

Matt Connolly


The web.config will always inherit from its parent if it's in the same web application but you can clear the entire thing or remove an item like so:

From the child web.config (clear all or remove an item)

<httpModules>
  <clear />
  <remove name="MyModule"/>
</httpModules>  

From the parent config by using the location tag...

<location inheritInChildApplications="false">
  <system.web>
    <!-- ... -->
  </system.web>
</location>

http://www.jaylee.org/post/2008/03/Prevent-ASPNET-webconfig-inheritance-and-inheritInChildApplications-attribute.aspx

like image 20
JKG Avatar answered Sep 18 '22 11:09

JKG