1

".aspx"와 비 확장 페이지 요청 (즉, contact.aspx 및/contact /)을 모두 처리하려고합니다. IIS7에서 사용자 지정 HttpHandler. 내 처리기는 하나의 케이스 또는 다른 케이스에서 잘 작동하지만, 두 케이스를 모두 처리하자마자 하나의 케이스에서만 작동합니다.사용자 지정 HttpHandler를 사용하여 IIS7의 .aspx 및 비 확장 페이지에 대한 요청을 처리하는 데 문제가 있습니다.

난 단지 매핑을 유지하는 경우는 "*에서 .aspx"모든 .ASPX 요청이 올바르게 처리 할 수 ​​있지만, 분명히 확장명이 요청이 작동하지 않습니다 :

<add name="AllPages.ASPX" path="*.aspx" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" /> 
핸들러가 아래에있는 내 Web.config의에서 니펫을 참조하십시오

매핑을 "*"로 변경하면 모든 확장 기능없는 요청이 올바르게 처리되지만이 핸들러에서 여전히 처리해야하는 ".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="" /> 

미친 것은입니다 난 2과 (에 ".ASPX"요청을로드 할 때 구성 표시됨) IIS7에서 404 찾을 수 없음 오류가 발생합니다. 또한이 오류는 요청이 StaticFiles 처리기에 의해 처리되었음을 나타냅니다. 하지만이 문제를 피하기 위해 resourceType = "File"을 StaticFileHandler에 추가했습니다. MS에 따르면 이것은 요청이 "디스크의 실제 파일"에 대한 것임을 의미합니다. 디스크에있는 부분을 잘못 읽고 해석하고 있습니까?

내 .aspx 파일이 디스크에 없기 때문에 처음부터 처리기를 사용하려고합니다.

답변

2

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

보다 나은 해결책은 URL Rewrite Module과 같은 HttpModule 구현을 사용하여 가상 경로를 페이지 또는 핸들러에 다시 쓰는 것입니다.