Windows Server 2008 (64 비트)에서 wcf 서비스를 검색하는 동안 "HTTP 오류 404.3-찾을 수 없음"


88

.Net Framework 3.5 sp1을 기반으로하고 Windows Server 2008 (64bit)에서 호스팅되는 응용 프로그램을 개발 중입니다.

wcf 서비스 (.svc)를 로컬로 검색하는 동안 모든 것이 정상이지만 전체 도메인 URL로 검색하는 동안 오류가 발생했습니다.

로컬 주소는 다음과 같습니다. http : //localhost/MyService.svc

도메인 주소는 다음과 같습니다. http://MySite.ir/MyService.svc

그런데 페이지 (.aspx) 및 기타 파일이 localhost와 도메인 주소 모두에서 올바르게 작동합니다.

어떤 아이디어라도 감사하겠습니다

자세한 오류는 다음과 같습니다.


HTTP 오류 404.3-찾을 수 없음

확장 구성으로 인해 요청한 페이지를 제공 할 수 없습니다. 페이지가 스크립트 인 경우 핸들러를 추가하십시오. 파일을 다운로드해야하는 경우 MIME 맵을 추가하십시오. 자세한 오류 정보

모듈 : StaticFileModule

알림 : ExecuteRequestHandler

핸들러 : StaticFile

오류 코드 : 0x80070032

요청 URL : http://MySite.ir:80/MyService.svc

실제 경로 : D : \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

로그온 방법 : 익명

로그온 사용자 익명

답변:


224

여기 에서 WCF 구성 요소를 활성화했는지 확인 하십시오 .

또는 다른 쉬운 방법은 제어판-> Windows 기능 켜기 또는 끄기->로 이동하여 아래 스크린 샷에 언급 된대로 모든 옵션을 선택했는지 확인하는 것입니다.

여기에 이미지 설명 입력

한 번에 모든 기능을 활성화 할 때 오류가 발생하는 경우 각 상자를 활성화하고 수락해야 할 수 있습니다.


36
.Net Framework 4.5 고급 서비스-> WCF 서비스 확인 및-> HTTP 활성화가 나를 위해 해냈습니다!
devHead

3
Windows Server 2012-HTTP 활성화 및 포트 공유 확인 만 필요합니다.
dibs487

2
이 응답에 추가하여 상자를 하나씩 활성화합니다. 동시에 모든 검사가 실패 할 수 있습니다. Windows Server 2012에서 발생합니다.
harveyt

2
이 답변이 상단에 있어야합니다
markthewizard1234

3
이것은 정답입니다. 이것은 나를 위해 문제를 해결했으며 IIS 처리기 매핑에 수동으로 아무것도 추가 할 필요가 없었습니다.
안토니

25

네, 답은 다음과 같습니다.

핸들러 매핑으로 이동 | 핸들러 관리자 추가 -> 다음 정보 추가

요청 경로 : * .svc

형식 : System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089

이름 : svc-Integrated


3
web.config 파일에이 파일을 추가하려는 모든 사람은 .NET 4.5 프로젝트에서 저에게 적합합니다. <add name = "svc-Integrated"path = " .svc"verb = " "type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr

6
나를 위해 @StefanMohr의 줄을 Web.config에 추가하는 것은 제대로 작동하지 않았습니다. 그러나, 나는 변화 path="*.svc"하고 verb="*"그것은 큰 일했습니다. 따라서 내가 사용한 줄은 다음과 같습니다.<add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> (configuration / system.webServer / handlers에 추가됨)입니다.
Aron Boyette 2015

11

Windows Server 2012에서이 문제가있는 사람이 있다면 여기에 Bill Moon의 대답이 있습니다. 나를 위해 그것을 해결 :

"Windows Server 2012의 경우 ... 서버 관리자에서 역할 및 기능 추가를 클릭하고 적절한 서버를 선택한 다음 기능을 선택합니다. .NET Framework 4.5 기능 아래에 WCF 서비스가 표시되고 그 아래에 HTTP 활성화를 찾으십시오. "


1
기존 웹 응용 프로그램에서 Windows 기능을 추가 한 후 다음을 수행해야합니다.-inetmgr 시작- "처리기 매핑"열기-확장명 * .svc에 대한 svc-ISAPI 매핑이 있는지 확인합니다. 그렇지 않은 경우 "Revert To Parent"작업을 사용하여 상위 웹 사이트에서 복사합니다. 이는 일반적으로 IIS7 +의 경우와 같이 응용 프로그램의 web.config에 사용자 지정 처리기 매핑이 구성되어 있다고 가정합니다. 그렇지 않으면 "Revert To Parent"를 실행할 때 손실됩니다.
Berend Engelbrecht

8

랩톱에 Windows 10이 있고 WCF 개발을 위해 Visual Studio 2015를 사용합니다. WCF는 Visual Studio에서 잘 실행되지만 IIS에서 호스팅 될 때 동일한 오류가 발생합니다.

IIS 처리기를 확인했습니다. svc 확장자가 없습니다. 그래서 첫 번째 답변에서 Mori가 제안한대로 IIS에 새로운 핸들러를 추가하려고했습니다. "System.ServiceModel.Activation.HttpHandler"유형을 찾지 못했습니다.

그래서 "Windows 기능 켜기 또는 끄기"를 열고 스크린 샷에 강조 표시된 기능을 설치했습니다.

이것은 나를 위해 일했습니다.

여기에 이미지 설명 입력


0

.Net 4.x를 사용하는 경우 PublicKeyToken은 31bf3856ad364e35입니다.

그러나 IIS에서 WCF 서비스를 올바르게 설치하는 방법에 대한 이 게시물 에 따라 핸들러가 설정되었습니다.


0

나는 이것을 답변에 주석으로 추가하고 싶었지만 충분한 담당자가 없었습니다. 다양한 플래그를 사용하여 ServiceModelReg 및 aspnet_regiis.exe를 실행하고 HTTP 활성화 기능을 추가했지만 여전히 작동하지 않았습니다. IIS에서 처리기 매핑 UI를 사용하더라도 System.ServiceModel.Activation.HttpHandler를 찾을 수 없기 때문에 작동하지 않았습니다. 마침내 효과가 있었던 것은 Mori가 언급 한 핸들러를 web.config 파일에 수동으로 추가하는 것입니다.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

내 프로젝트는 Windows 7에서 .Net 3.5 및 IIS 7.5를 실행하고 Win Server 2008 R2에서 IIS 7.0을 실행했습니다.


0

"Windows 기능 켜기 또는 끄기"창 ( 여기 참조 ) 에서 WCF HTTP 활성화를 선택 취소 하고 다음으로 이동하여 다시 설치 하십시오.

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

그리고 실행 ServiceModelReg -i

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.