2012-07-17 4 views
1

localhost/foo/bar과 같이 확장 할 수없는 URL을 요청할 때 실행해야하는 HttpHandler가있는 프로젝트가 있습니다. 이 올바르게 로컬 Visual Studio 개발 서버에서 <system.webServer><handlers> 대신 <system.web><httpHandlers> 사용하여 작업 있지만이 기능은 IIS 7.5 (표준 404 오류 : http://i.imgur.com/YuNjT.jpg) 배포 할 때 작동하지 않습니다. 이 문제는 확장되지 않는 URL로 제한되지 않으며 (마지막에 확장을 추가 할 수 있으며 문제가 남아 있습니다)하지만이 시나리오에서는 확장 기능이없는 URL을 사용하는 것이 좋습니다. 확장 성없는 URL로 인해 일부 문제가 발생할 수 있다는 정보를 봤습니다. AppPool은 통합으로 설정됩니다. 나는 aspnet_regiis.exe -i를 했어. HTTP 리디렉션 기능이 IIS 서버에 설치되어 있습니다.IIS 7.5의 무제한 URL에 대한 ASP MVC 처리기가 작동하지 않습니다.

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <handlers> 
     <add name="FileDownloadHandler" path="/Home/Files/*" verb="*" type="MvcApplication1.FileDownloadHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> 
    </handlers> 
    <directoryBrowse enabled="true" /> 
</system.webServer> 

그리고 여기 내 라우팅 설정은 다음과 같습니다 :

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("home/files/{*pathInfo}"); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

내가 코드를 추측하고있어 괜찮지 만 뭔가 내 IIS 구성으로 꺼져 여기 내 핸들러 설정이 있습니다. 누군가 올바른 방향으로 나를 안내 할 수 있습니까? 나는 지금 수일 동안 인터넷 검색을했고 나를 도운 해결책을 찾지 못했습니다. 다음은 샘플 프로젝트입니다 (내 IIS에 dev에 서버 VS 지역에서 작동하지만) : http://localhost/MvcApplication1/Home/Files/foobar

: 빌드 (및 해당 지역의 IIS에 배포) 할 때 http://mapman.pl/MvcApplication1.zip

위의 솔루션은이 같은 URL을 요청하려고 사전에 감사합니다, 당신의 Web.config에서 Bartek

답변

1

대체 :

path="/Home/Files/*" 

로 :

path="Home/Files/*" 

IIS에서 응용 프로그램을 호스팅 할 때 가상 디렉터리 이름이 있고 올바른 경로가 이 아닌 /Home/Files/*이 아니기 때문입니다. 이 문제는 path 속성의 상대 URL을 사용하면 쉽게 해결할 수 있습니다.

관련 문제