2014-01-06 2 views
1

wcf 응용 프로그램이 있습니다. "Service1.svc"파일이 있습니다. 지정한 web.config 파일에서IIS가 호스팅하는 wcf가 빈 페이지를 반환 함

http://localhost:2005/EmployeeService.svc 

을 종점으로 사용합니다. Visual Studio에서 찾아보기를 클릭해도 문제가 없습니다. 그러나 IIS 서버에서 호스팅 할 때 빈 페이지가 나타납니다. 흥미로운 점은 웹에서 주소를 삭제하면됩니다. 이번에는이 주소에서 서비스를 볼 수 있습니다.

http://localhost:2005/EmployeeService.svc 

web.config 파일은 다음과 같습니다 : 나는 ADRESS를 제공 할 때 내가 IIS에 빈 페이지를 얻을 이유

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="EmployeeServiceBehaviour"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="EmployeeServiceBehaviour" name="EmployeeConfiguration"> 
     <endpoint address="http://localhost:2005/EmployeeService.svc" binding="basicHttpBinding" 
      bindingConfiguration="" contract="IEmployeeConfiguration" /> 
     </service> 
    </services> 
    </system.serviceModel> 
    <system.web> 
    <compilation debug="true"/> 
    </system.web> 
    <system.webServer> 
    <directoryBrowse enabled="true"/> 
    </system.webServer> 
</configuration> 

당신이 설명해 주시겠습니까.

+1

의미있는 대답을 얻으려면 web.config serviceModel 요소 내용을 표시해야합니다. URL을 "바인딩"으로 설정하면 어떤 의미인지 알 수 없습니다. –

+1

그가 "끝점"을 의미한다고 생각합니다 – Amy

+0

Sory, 질문을 편집했습니다 –

답변

2

Service.svc 전에 주소의 모든 텍스트를 제거 할 수 있다고 생각합니다. 이것은 다른 URL의 문제 일 수 있습니다.

주소 부분을 지정하면 해당 주소에서만 서비스를 사용할 수 있음을 WCF에 알립니다. 끝점을 통과 할 때 WCF는 주어진 URL과 일치하고 구제 아웃을 찾지 않습니다.

여러 개의 엔드 포인트가있는 경우 주소 필드가 필요합니다. 그렇지 않으면 당신은하지 않습니다. 읽기 http://msdn.microsoft.com/en-us/library/ms733749(v=vs.110).aspx

특히이 부분에서

는 :

IIS에 호스팅, 당신은 ServiceHost를 인스턴스를 직접 관리하지 않습니다. 기본 주소는 항상 IIS에서 호스팅 할 때 서비스의 .svc 파일에 지정된 주소입니다. 따라서 IIS가 호스트하는 서비스 끝점에 상대 끝점 주소를 사용해야합니다. 완전한 엔드 포인트 주소를 제공하면 서비스 전개시 오류가 발생할 수 있습니다.

+0

하지만 주된 문제는 이것입니다. 끝점 주소를 올바르게 지정하면 빈 페이지가 나타납니다. 나가 종점 주소를 지정하지 않는 경우에 나는 서비스를 얻을 수있다. 그렇다면 coerrct 엔드 포인트 주소의 문제점은 무엇입니까? 왜 나는 빈 페이지를 얻고 있는가? –

+1

내 업데이트 된 답변보기 –

+0

감사합니다.이 문제는 정말로 명확 해졌습니다. –

1

SVC 마크 업에서 Service 속성이 구현 클래스와 동일한 지 확인하십시오.

끝점 계약 이름을 확인하십시오. 인터페이스의 전체 이름이어야합니다. 어셈블리 이름을 추가하지 마십시오. 작동하지 않습니다.

체크 <serviceMetadata httpGetEnabled="true" />. false이면 빈 페이지가 나타납니다.

그리고 나에게 도움이 된 4 번째 변경 사항 (이유는 모르겠다.) : 동작 이름 <behavior name="">을 제거하고 속성을 service 요소에서 제거하십시오. 어쨌든 동작이 사용되도록 기본값이됩니다.

2

HTTP에서 발생할 수 있습니다. Windows에서 프로그램 및 기능에 활성화가 설치되어 있지 않습니다. .Net 3.5 및 4.6 모두에 대해 HTTP 활성화를 확인하여 IIS에서 호스팅되는 .svc 파일에 대한 HTTP 요청을 통해 WCF 서비스를 열 수 있습니다.

관련 문제