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

2

8

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

Grudge answered 29/1, 2010 at 17:32 Comment(3)
Here's an article on setting up IIS7 sites, applications and virtual directories... mvolo.com/blogs/serverside/archive/2007/07/12/… bloggingdeveloper.com/post/…Gorki
Glad to help, let us know if you still can't track down the other issue.Gorki
found that bug too. The dev who was supposed to remove the log4net section did not remove it, removing it resolves the issue. Totally unrelated !!!Grudge
B
9

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>
Boughton answered 29/1, 2010 at 19:53 Comment(1)
Good catch, to busy working I guess and I forgot about system.webServer!Gorki
G
5

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

Gorki answered 29/1, 2010 at 17:38 Comment(3)
Hmmm, that really should work. Have you tried this with just a simple folder and with the sub application? More examples... aspdotnetfaq.com/Faq/… #367782Gorki
Yes, I am trying to have a very simple "MainApp" and a "SubApp" as a subapplication of MainApp. Any html inside MainApp/SubApp works, but any call to MainApp/SubApp/myPage.aspx fails. I have updated the question too with this problemGrudge
Do you mind pasting the exception your getting or the actual error details? That might help.Gorki

© 2022 - 2024 — McMap. All rights reserved.