2013-07-04 3 views
0

지금까지 WCF 웹 서비스에서 wsdl 파일을 출력하는 데 어려움을 겪고 있습니다. 비어 있습니다.빈/빈 WSDL 파일

에 SVC 파일 :

<%@ ServiceHost Language="C#" Debug="true" Service="xxx.WCF.SubsetMID" CodeBehind="SubsetMID.svc.cs" 
Factory="System.ServiceModel.Activation.WebServiceHostFactory" 
%> 

연사 파일 :

namespace xxx.WCF 
{ 
    [ServiceContract(Namespace = "SubsetMID")] 
    public interface ISubsetMID 
    { 
     [OperationContract] 
     [WebInvoke(BodyStyle=WebMessageBodyStyle.Wrapped)] 
     long[] GetMIDs(Guid guid, int subsetID); 
    } 

    [DataContract] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
    public class SubsetMID : ISubsetMID 
    { 
     public long[] GetMIDs(Guid guid, int subsetID) 
     { 
      [...] 

      return returnValue; 
     } 
    } 
} 

내 웹 설정 파일 : 나는 WSD에 액세스 할 때 내가 어떤 오류가 발생하지 않는

<system.serviceModel> 
    <services> 
    <service name="xxx.WCF.SubsetMID"> 
     <endpoint address="" 
       binding="wsHttpBinding" 
       contract="xxx.WCF.ISubsetMID" /> 

     <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
    </service> 
    </services> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior> 
     <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment 
     multipleSiteBindingsEnabled="true" 
     aspNetCompatibilityEnabled="true" 
    /> 
</system.serviceModel> 

(http://.../SubsetMID.svc?wsdl)하지만 빈 페이지 일뿐입니다.

답변

2

다음은 내가 수행 한 일부 연구를 기반으로 한 최선의 추측입니다. RESTful WCF 서비스에 익숙하지 않아서 틀릴 수도 있지만 적어도 출발점을 제공해야합니다.

지정하지 않았지만 RESTful WCF 서비스를 작성하려는 것 같습니다. 끝점에 wsHttpBinding을 사용하고 있으므로 서비스의 메서드를 [WebInvoke]으로 장식하기 때문에 완전히 확신 할 수는 없습니다.

어떤 경우에도 REST 서비스에는 WSDL이 없다. SOAP이다. 또한 WCF가 webHttpBinding으로 REST를 지원한다고 생각합니다. 당신이 당신의 SVC는 파일에 WebServiceHostFactory를 사용하고, 나는 이런 일이 무엇 생각 :

당신은 정의 된 webHttpBinding 엔드 포인트가 없습니다. WCF는 .svc 파일의 위치를 ​​기반으로 한 주소로 기본 webHttpBinding 끝점을 만듭니다. 그러나, 기본 엔드 포인트 WebServiceHost Class에 따라 사용하는 경우 :

...the WebServiceHost also disables the HTTP Help page and the Web Services Description Language (WSDL) GET functionality so the metadata endpoint does not interfere with the default HTTP endpoint.

당신이 REST 서비스를 작성하는 경우, 당신은 WSDL 필요하지 않습니다. SOAP 서비스를 사용하려면 .svc 파일에 ServiceHostFactory을 사용하고 메서드에서 [WebInvoke] 특성을 제거하십시오.

다시 말하지만, 이것은 (상대적으로) 교육받은 추측이며 잘못된 것일 수 있지만 시작할 장소입니다.

+0

나는 내 서비스를 REST로 정했다. 내가 원하는 것은 그것을 게시하는 방법이며 새로운 프로젝트에서 그것을 참조하는 쉬운 방법이 있습니다. Halas, 인터넷에서 읽을 수있는 것은 자체 호스팅 WCF 서비스에 관한 것입니다. Google은 "svc"를 "wcf"로 번역하여 검색을 정말 어렵게 만듭니다. : – Serge

+0

그런 다음 .svc 파일 마크 업을'ServiceHostFactory'를 사용하도록 변경하고 서비스 메소드의'[WebInvoke]'속성을 제거하면 트릭을 수행해야합니다. – Tim

0

당신은 svc 파일을 포함하는 wcf 서비스 웹 사이트 프로젝트를 사용하고 있다고 생각합니다. 그럴 필요가 없다면 솔루션에서 시작 프로젝트로 설정하여 올바르게 디버깅 할 수 있도록하는 것이 좋습니다. 나를 위해, 그리고 좋은 기회가 당신을 위해 codeproject 단계별 지침을 따라 갔다면 문제는 내가 웹 사이트에서 wcf 서비스를 참조하지 않았기 때문에 SVC의 지시문이 서비스를 찾을 수 없다는 것이 었습니다. 내가 도왔 으면 좋겠다