최근 Visual Studio를 2013로 업그레이드했습니다. 이제 Cashini 대신 기본적으로 IIS Express 만 사용하며 WCF 서비스 자바 스크립트 끝점 인 Myservice.svc/js 또는/jsdebug,하지만 .svc 직접 타격을 잘 작동합니다.WCF + MVC + WebAPI 처리기 및 라우팅
(일부 ExtensionlessUrlHandler 항목을 포함하는) web.config의 핸들러 > 섹션을 제거하면 스크립트 끝점의 기능이 복원된다는 것을 발견했습니다. 나는 다음과 같은 항목을 제거하는 반향이 어떤 대안을 가지고 있는지 궁금하다. 여기
내가 내의 Web.config에서 제거 된 블록 :<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
일부 컨텍스트, 나는 모든 하나 개의 프로젝트에 .NET 4.5, MVC 5.1, WebAPI 2.1 및 WCF를 사용하고 있습니다. 기본적으로 모든 구성 요소의 최신 버전.
업데이트 1 : 또한 이러한 핸들러가 제거 된 상태에서 WebAPI PUT이 404로 복귀한다는 사실을 알고 있습니다. 그래서 무언가가 분명히 빠져 있습니다. 다른 작은 부두는 라이브 서버 (IIS 7.5 [버전 7.5.7600.16385])에 배포 할 때 모든 것이 훌륭하게 작동합니다. 따라서 Visual Studio 2013 통합 버전의 IIS Express와 전체 IIS 7.5 설치의 라우팅 또는 처리기 매핑에는 차이가 있어야합니다.
또한 새 ASP.NET 웹 응용 프로그램을 만들고 WCF 서비스를 추가하면 모든 것이 로컬에서 올바르게 작동합니다. 그런 다음 WebAPI 컨트롤러를 추가하면 아래의 처리기 섹션이 web.config에 추가되고 모든 WCF 호출이 중단됩니다. MVC, WCF 및 WebAPI가 모두 하나의 응용 프로그램에 포함되어있는 경우 Microsoft의 기본 구성에서 "버그"처럼 들립니다.
업데이트 2 : 다음은 내가 겪고있는 오류를 재현 할 수있는 기본적인 테스트 사례입니다.
프로세스 기본 문제를 재현하기 : (404 WebAPI 가공, WCF * SVC는/JS 결과)
가 이- 새 프로젝트 -> Asp.NET 웹 응용 프로그램 (웹 API 템플릿을 사용하여 MVC를 포함 웹 API 참조)
- 추가 새() 도움말 페이지를 렌더링
- 시작 프로젝트.
- 그/도움말 경로가 MVC 작동 확인 "TestService"WCF 서비스 (root라는 이름을 투사) 아약스는 지원 " 0 *
- 이 TestService 확인 -
- 이 API는/WebApi (반환 값)에 대한/1 작품
- * 그건 PUT/API/WebApi에 대한/1 작품 값 확인 값/즉 GET 확인 (무효 방법 아무 것도 반환하지 않습니다). svc가 WCF (메타 데이터 페이지 표시)에 도달 할 수 있음
- * TestService.svc/js가 WCF 용 라우팅 문제 인 경우 404 오류로 확인하십시오!*
부분 수정 : (WebAPI의 PUT 깨진, WCF가 렌더링 할 수있는 JS 요청)
- ... 위에서
- 업데이트의 Web.config를 계속 < 핸들러 >을 주석 섹션
- 프로젝트를 시작하십시오. MVC는 (도움말 페이지를 렌더링)에 대한
- 는/1이 실패
- *이 있는지 확인이 PUT/API를/값 API는/WebApi (반환 값)에 대한/1 작품 값/
- 은 그 GET 있는지 확인/도움말 경로가 작동하는지 확인 WebApi 용 404 - 라우팅 문제! *
- TestService.svc은 WCF에 대한 타격을받을 수 있는지 확인 (보여준다 메타 데이터 페이지)
- 이 실제로 MVC 라우팅
IIS Express는 실제로 IIS 동작을 올바르게 재생하지 못하고 대안에 비해 많은 이점을 제공하지 않습니다. ASP.NET 개발 서버를 사용하면 어떻게됩니까? – CodeCaster
저는 Visual Studio가 기본적으로 설치/실행되는 IIS Express의 별도 설치를 사용하지 않습니다. – bmherold
알지만 프로젝트 속성에서 변경할 수 있습니다. – CodeCaster