2012-12-25 3 views
1

나는 웹에서 하루 종일 검색을 해왔지만 아무 것도 발견하지 못했습니다.Webresource.axd가 내 사용자 정의 HttpModule을 실행하지 못하도록하는 방법

<modules runAllManagedModulesForAllRequests="false"> 

그리고

<add name="MyModule" type="namespace.to.MyModule" preCondition="managedHandler" /> 

을 그리고 이것은 이미지, CSS, JS와 같은 정적 리소스에 발사되는 (이 예에서는 PostAuthenticateRequest 푹) 인 MyModule을 방지하는 것입니다 : 내 Web.config의에서 나는 설정 곧. 그러나 모듈은 여전히 ​​WebResource.axd와

+0

어떻게 해고되지는 모르겠지만 들어오는 요청을 검사하고 모듈에서 조기 반환을 수행 할 수 있습니다. – ChrisAnnODell

+0

"inspecting"이란 요청을 트리거 한 파일을 검사하는 것을 의미합니다. 나는 그 생각을 지금 생각해 내고 있었다. .. 내일 I 'll는 시험해 볼 것이다. 어떤 경우에 대비하여 여전히 "표준"솔루션을 찾고 있습니다. 고마워요! – Manight

답변

0

에서 발사 된 것, 특히 페이지 내에서 .axd 파일에 의해 해고 나는이 수표를 추가 내 HttpModule을하고 그것을 작동 :

  ' Skip the module for non aspx requests like .axd or url without default document 
    Private Sub Application_PostAuthenticateRequest(ByVal source As Object, ByVal e As EventArgs) 
     Dim request = DirectCast(source, HttpApplication).Request 
     If request.CurrentExecutionFilePathExtension.ToLower <> ".aspx" Then 
      Exit Sub 
     End If 

이 PostAuthenticateRequest에 중독되어 .

Protected Overridable Sub OnEndRequest(context As HttpContext)   
    ' Skip the module for non aspx requests like .axd or url without default document 
     Dim request = context.Request 
     If request.CurrentExecutionFilePathExtension.ToLower <> ".aspx" Then 
      Exit Sub 
     End If 

또한 같은 문서없이 URL을 호출 할 때 예를 http://www.yoursite.com에 대한 IIS가 트리거 참고 : 당신이 예를 OnEndRequest에 대한 같은 다른 이벤트에 훅 경우 HttpContext를에 대한 액세스 권한이없는 같이 HttpApplication을 이렇게 대신 추가 조심 http://www.yoursite.com/Default.aspx (또는 사용자가 설정 한 모든 def 문서)로 요청하십시오. 페이지가 비어 있어도 2 개의 요청이 트리거됩니다. IIS 사이트에서는 "기본 문서 요청의 경우 첫 번째 요청은 무한한 URL에 대한 것이므로 IIS는 초기 요청 처리 중에 관리되는 처리기의 전제 조건으로 표시된 관리되는 모듈을 실행하지 않습니다." 하지만 사실이 아닙니다. 심지어 내 HttpModule 속성을 가진 precondition = "managedHandler"http://www.yoursite.com/ 같은 요청으로 표시된 두 번 (하나의/트리거 및 /Default.asp). 어쨌든 위의 해결 방법을 사용하면이 문제를 해결할 수 있습니다.