IIS가 web.config에서 사용자 정의 HTTP 모듈을로드하지 않습니다


18

web.config에서로드하는 ASP.NET MVC3 웹 사이트에 대한 사용자 정의 HTTP 모듈이 있습니다.

<system.web>
    <httpModules>
      <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
    </httpModules>
</system.web>

VS 웹 서버 내에서 사이트를 실행할 때 모듈이 올바르게로드되지만 (Init 메소드의 중단 점이 적중) IIS에서 호스팅하면 무시되는 것처럼 보입니다 (브레이크 포인트가 누락되고 모듈의 기능이 없음) 사이트에서). 비슷한 결과로 두 개의 별도 IIS 상자에서 시도했습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까? IIS가 사이트의 web.config에서 모듈을로드 할 수 있도록 설정해야하는 설정이 있습니까?

답변:


25

질문을 한 직후에 이것을 알아 냈습니다. IIS7은 web.config에 다른 스키마를 사용합니다. 모듈을로드 할 수있는 올바른 위치는 다음과 같습니다.

<system.webServer>
  <modules>
    <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
  </modules>
</system.webServer>

3
이 동일한 문제가 발생 하여이 게시물이 문제를 해결하는 데 도움이됩니다. 로컬 dev 서버와 프로덕션 서버 모두에서 사용자 정의 모듈이 작동하도록 system.web / httpModules 및 system.webServer / modules를 모두 유지해야한다는 것을 알았습니다.
Ido Ran

와! 감사합니다. 나는 이것에 대해 벽에 머리를 두드리고 있었다.
Alex C

3
아마도 차이점은 IIS6 대 IIS7이 아니라 클래식 모드와 통합 모드입니다.
Jan Zahradník

1

비슷한 문제가 있습니다. 내 솔루션은 모듈을 먼저 제거한 다음 system.webServer 네임 스페이스에 다시 추가하는 것과 관련이 있습니다.

<system.webServer>
   <modules>
     <remove name="MyModule"/>
     <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
   </modules>
</system.webServer>

두 개의 다른 IIS 서버에 배포하기 때문일 수 있습니다. 하나는 서버 2003 (iis 6)에 있고 다른 하나는 서버 2008 (iis7 +)에 있습니다. 따라서 모듈을 추가하면 네임 스페이스에서로드가 차단되는 것처럼 보였습니다. 나는 여기 잘못 될 수 있습니다 ...


1

7 년 후 : IIS 버전에만 국한되지 않고 응용 프로그램 풀 모드에만 적용됩니다 : 클래식 대 통합.

  <system.webServer><!--for integrated mode-->
    <modules>
      <add name="modulename" type="blabla.modulenamehere" />
    </modules>
  </system.webServer>

  <system.web><!--for classic mode-->
     <httpModules>
      <add name="modulename" type="blabla.modulenamehere" />
    </httpModules>
  </system.web>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.