2011-02-18 4 views
2

나는 다음과 같은 경로로 통합 파이프 라인을 사용하여 IIS7 아래에 설정 한 ASP.Net MVC 2 사이트가 포함되어 다른 경로가ASP.Net MVC (404) 오류 경로는 SVC는 확장

routes.MapRoute(
    "MyRoute", 
    "mycontroller/{name}/{*path}", 
    new { controller = "MyController", action = "Index", path = UrlParameter.Optional } 
); 

이 없습니다를 이 경로 위, 그러나 나는 시도하고 예를 들어, .svc 확장명을 가진 경로 값으로 위의 경로에 액세스 할 때마다 :

http://localhost/MyVirtualDirectory/mycontroller/test/somepath.svc

ASP.Net이 내 컨트롤러를 실행하지 않고 404 오류를 반환합니다 (동작 방법의 시작 부분에 로그 메시지가 있습니다). 확장명을 .txt와 같은 무언가로 변경하면 완벽하게 작동하므로 라인 어딘가에있는 것 같습니다. ASP.Net은 존재하지 않는 웹 서비스에 대한 표준 ASP.Net 호출로 요청을 해석하고 있습니다. 이것은 확실히 ASP.Net 404 응답입니다 (IIS 응답 아님).

이 문제의 원인은 무엇이며 어떻게 멈추게합니까?

+0

의 중복 가능성 [내 라우팅 테이블의 SVC는 파일을 대체 할 수 있는가? (http://stackoverflow.com/questions/3662555/how-can-i-override-a-svc-file-in-my-routing-table) – Justin

답변

5

IIS가 .svc 파일을 서버로 구성 했습니까? 당신은 SVC는 MIME 타입

에게 추가 '추가'에 귀하의 웹 사이트 선택

  1. IIS

    에서

    를 IIS에 add the .svc MIME type에 MIME 유형에

  2. 클릭
  3. 을 클릭해야 할 수 있습니다 업데이트

    시도 this answer

    .svc 파일에 등록 된 빌드 공급자 때문입니다. 이 빌드 공급자는 기본 컴퓨터 수준의 web.config 파일에 의해 등록됩니다.

    업데이트 당신의 Web.config

    <system.web> 
        <compilation debug="true" targetFramework="4.0"> 
        <buildProviders> 
         <remove extension=".svc"/>    
        </buildProviders> 
    

    Phil Haack's full post on the issue

+0

시도해 보았습니다 - 아무런 효과가 없습니다 - 또한 알 수없는 확장자 (예 : .bob)를 사용하면 잘 작동합니다. – Justin

+0

좋아, 기본 새 응용 프로그램 서식 파일에서 복제 할 수 있으므로 주위를 둘러보고 더 많은 정보를 찾았습니다. 내 대답을 업데이트했습니다. –

+0

빌드 제공자가 한 일입니다. – Justin