2013-08-01 5 views
3

내가 IHttpModuleRewritePath()를 사용하고 하위 웹 응용 프로그램을 "길"이 레이아웃 IIS에서로 :HttpModule에서 URL을 다시 쓸 때 물결 표시 줄 (~) 연산자를 사용하려면 어떻게해야합니까?

예를 들어 enter image description here

/루트/bleh에 대한 요청이 들어 오면, 루트 응용 프로그램에서 HTTP 모듈은 OBW 응용 프로그램이 이상 걸릴 것이라는 점을 희망 /루트/OBW의 경로를 다시 작성합니다.

대부분 제외하고 작동이 물결표 (~)가 제대로 해결되지 않는 :

물결표 운영자가 재 작성 후 루트 웹 응용 프로그램에 해결

enter image description here

아닌 OBW 웹 앱. 이것은 rebaseClientPath 인수가 RewritePath()에 대한 것이므로 해당 인수를 변경해도 차이가없는 것처럼 보입니다.

어떻게 URL을 다시 작성하는 경우 적절하게 해결하기 위해 물결표 (~) 연산자를 얻을 수 ?

+0

어떻게 경로를 다시 작성 하시겠습니까? RewritePath (..., false)를 호출합니까? 물결표를 재 작성된 경로에 유지 하시겠습니까? –

답변

3

의 RewritePath이 다른 응용 프로그램에 요청을 보내도록 설계되지 않았기 때문에이 작동하지 않습니다. '대부분 효과가있다'고 말하지만 실제로는 생각하는대로하지 않고 동일한 애플리케이션에서 재 작성된 요청을 처리합니다. 이것이 ~가 하위 앱으로 해석되지 않는 이유입니다.

작동하지 않는 많은 것들이 있습니다. 예 :

  • 당신이 당신의 OBW 폴더 아래 Global.asax에, 그것은
  • 를 무시됩니다있는 경우 즉 OBW/빈

에서 온 어셈블리를로드 할 수 없습니다, RewritePath의 컨텍스트에서 obw를 일반 하위 폴더로 처리하고 특별한 것이 아닌 것입니다.

대안으로이 문제가없는 것이다는 IIS URL Rewriter module 사용을 고려할 수 있습니다.

+0

좋은 정보! 슬프게도, IIS Rewrite Providers [요청 본문에 대한 액세스를 허용하지 않는 것으로 보입니다] (http://stackoverflow.com/q/17733444/222481). – ladenedge

+0

다른 모든 방법으로 문제가 발생하면 IIS 기본 모듈을 작성할 수 있습니다. –

+0

기본 모듈이 달라 집니까? 이것이 "글로벌"모듈일까요? – ladenedge