2011-08-19 4 views
3

IIS 7.5에서 호스팅되는 REST 및 SOAP 끝점을 사용하여 WCF4 서비스를 만들고 있습니다. 예를 들어 WCF4 REST 템플릿을 사용했습니다. 그러나 지금까지 설정에 관한 몇 가지 질문이 있습니다.REST/SOAP 끝점이있는 WCF 4.0 서비스 용 WSDL을 게시하는 방법

는 여기가 standardEndpoints 부분을 제거하고 내 자신의 엔드 포인트를 추가 한

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="REST"> 
       <webHttp helpEnabled="true"/> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
      <behavior name="MEXGET"> 
       <serviceMetadata httpGetEnabled="true"/> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="MEXGET" name="Project.WebService.VehicleService"> 
      <endpoint 
       address="" 
       behaviorConfiguration="REST" 
       binding="webHttpBinding" 
       contract="Project.WebService.IVehicleService" /> 
      <endpoint 
       address="soap" 
       binding="basicHttpBinding" 
       contract="Project.WebService.IVehicleService" /> 
      <endpoint 
       address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
     </service> 
    </services> 
</system.serviceModel> 

내 webconfig입니다. 내가 Global.asax에있는 경로를 설정 한대로 http://localhost:1313/ServiceTest/VehicleService/help

를 통해

private void RegisterRoutes() 
{ 
    RouteTable.Routes.Add(new ServiceRoute("VehicleService", new WebServiceHostFactory(), typeof(VehicleService))); 
} 

도움말 페이지에 액세스 할 수 아래와 같이 더 SVC는 파일이 없습니다 나는 또한 WCF 테스트 클라이언트를 사용했습니다 http://localhost:1313/ServiceTest/VehicleService/mex SOAP 끝점에 대한 메타 데이터를 표시합니다.

그러나 서비스의 WSDL은 어떻게 검색합니까?

svc 파일을 사용하면 http://localhost:1313/ServiceTest/VehicleService.svc?wsdl에서 wsdl을 찾을 수 있습니다. 그러나 .svc 파일이 없습니다. 그리고 어느 쪽도 아니 내가 http://localhost:1313/ServiceTest/VehicleService?wsdl 또는 http://localhost:1313/ServiceTest/VehicleService/soap?wsdl

에서 WSDL을 찾을 수 있습니다 나는 내가 SOAP 엔드 포인트에 대한 WSDL을 게시 할 경우 SVC는 파일을 추가해야합니까?

답변

6

WSDL을 http://localhost:1313/ServiceTest/VehicleService?wsdl에서 처리 할 수있었습니다. 이 솔루션은 global.asax에서 새로운 WebServiceHostFactory 대신 새로운 ServiceHostFactory를 사용하고있었습니다. WebServiceHostFactory를 사용하면 WSDL 기능이 손실됩니다.

비슷한 질문은 여기에서 찾을 수 있습니다 : ServiceRoute + WebServiceHostFactory kills WSDL generation? How to create extensionless WCF service with ?wsdl

0

당신은 브라우저에서 직접 MEX URL을 사용하여 WSDL을 얻을 수 있어야합니다 :

http://localhost:1313/ServiceTest/VehicleService/mex 

WcfTestClient에서 거의 확실하게이 서비스에 대한 프록시를 생성 할 수 있도록 그 WSDL을 검색하고있다.