IIS7에서 .aspx 및 비 환탈 페이지에 대한 요청을 처리하기 위해 사용자 정의 httphandler를 사용하는 문제

StackOverflow https://stackoverflow.com/questions/1919225

문제

IIS7의 사용자 정의 httphandler를 사용하여 ".aspx"및 비 경험 페이지 요청 (예 : Contact.aspx 및 /Contact /)을 모두 처리하려고합니다. 내 핸들러는 한 경우 또는 다른 경우에는 잘 작동하지만 두 경우를 모두 처리하려고하자마자 하나만 작동합니다. 아래의 web.config에서 핸들러 스 니펫을 참조하십시오.

"*.aspx"에만 계속 매핑하면 모든 .aspx 요청이 올바르게 처리되지만 명백히 확장없는 요청은 작동하지 않습니다.

<add name="AllPages.ASPX" path="*.aspx" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />

매핑을 "*"로 변경하면 모든 확장자가없는 요청이 올바르게 처리되지만이 핸들러가 작동하지 않는 ".aspx"요청은 작동하지 않습니다. 이미지, CSS, JS 등과 같은 디스크에있는 파일을 처리하기 위해 staticfiles 항목을 추가했습니다.

<add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
<add name="StaticFiles" verb="GET,HEAD" path="*.*" type="System.Web.StaticFileHandler" resourceType="File" />
<add name="AllPages" path="*" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />

미친 점은 ".aspx"요청을로드 할 때 (두 번째 구성 표시와 함께) IIS7은 404를 찾지 못한 오류를 제공한다는 것입니다. 오류에 따르면 요청은 staticfiles 핸들러에 의해 처리된다고합니다. 그러나 이것을 피하기 위해 staticfilehandler에 resourcetype = "file"을 추가해야했습니다. MS에 따르면 이는 요청이 "디스크의 물리적 파일"에 대한 것임을 의미합니다. "디스크"부분을 잘못 읽거나 해석하고 있습니까?

내 .aspx 파일은 디스크에 있지 않기 때문에 처음에는 핸들러를 사용하고 싶은 이유입니다.

도움이 되었습니까?

해결책

두 번째 구성은 *.aspx가 처리합니다. StaticFileHandler 파일이 존재하기 때문에 핸들러의 기준을 충족합니다. 그러나 핸들러는 이러한 파일을 제공하지 않도록 구성되며 대신 404 메시지를 생성합니다.

더 나은 솔루션은 다음과 같은 HTTPModule 구현을 사용하는 것입니다. URL 재 작성 모듈 가상 경로를 페이지 나 핸들러에 다시 작성합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top