2014-01-28 4 views
2

<EndpointBehavior> 대신 <ServiceBehavior>으로 구성된 WCF 서비스에 대해 생성 된 도움말 페이지를 사용하고자합니다. 내 검색의 95 %는 <EndpointBehavior>과 관련이 있으며, <ServiceBehavior>에 대한 답변을 찾을 수 없거나, 세부 정보가 부족하거나, 단순히 작동하지 않는 것으로 나타났습니다.ServiceBehavior 구성을 통해 WCF 도움말 페이지를 활성화하는 방법은 무엇입니까?

저는 IIS에서 호스팅되는이 서비스의 작성자가 아니지만 서비스의 도움말 페이지를 사용하도록 설정되었습니다. 내가 찾은 바에 따르면 ServiceDebug 요소 아래에서 httpHelpPageEnabled 특성을 사용하도록 설정할 수는 있지만 아무 것도 수행하지 않고 httpHelpPageUrl을 추가하면 브라우저에서 볼 때 전체 서비스가 중단됩니다.

구성 : 관련 섹션.

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> 
    <bindings> 
    <basicHttpBinding> 
     <binding name="serviceBinding"> 
     <security mode="None"> 
     </security> 
     </binding> 
    </basicHttpBinding> 
    <wsHttpBinding> 
     <binding name="serviceWsBinding"> 
     <security mode="None"> 
     </security> 
     </binding> 
    </wsHttpBinding> 
    </bindings> 
    <client /> 
    <services> 
    <service behaviorConfiguration="ServiceBehavior" name="ServicesLib.Service"> 
     <endpoint listenUri="soap" name="soap" address="http://servicesdev.mySite.com/services/Service.svc/soap" binding="basicHttpBinding" bindingConfiguration="serviceBinding" contract="ServicesLib.IService" /> 
     <endpoint listenUri="soap12" name="soap12" address="http://servicesdev.mySite.com/services/Service.svc/soap12" binding="wsHttpBinding" bindingConfiguration="serviceWsBinding" contract="ServicesLib.IService" /> 
     <host> 
     <baseAddresses> 
      <add baseAddress="http://servicesdev.mySite.com/services" /> 
     </baseAddresses> 
     </host> 
    </service> 
    </services> 
    <behaviors> 
    <!-- These EndpointBehaviors aren't used, they are just here :? --> 
    <endpointBehaviors> 
     <behavior name="restBehavior"> 
     <webHttp /> 
     </behavior> 
     <behavior name="soapBehavior"> 
     <webHttp helpEnabled="true" /> 
     </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name="ServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" externalMetadataLocation="../Services.wsdl" /> 
     <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true" /> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

어떤 이유로 든 올바른 방법이 아니라면 다른 사람이 사용자 지정 도움말 페이지를 호스팅하는 올바른 방향으로 나를 가리킬 수 있습니까? Windows 서비스에서 하나를 호스팅하는 솔루션에 대해 this post을 읽었지 만 동일한 방식으로 서비스와 함께 호스팅되는 WCF 서비스에이를 추가하는 방법을 잘 모릅니다.

답변

1

ServiceDebugElement HttpHelpPageEnabledHttpHelpPageUrl 속성은 사용자 지정 도움말 페이지를 가능하게하는 메커니즘을 제공합니다. 그러나 속성은 서버에 사용자 지정 페이지를 생성하도록 자동으로 지시하지 않습니다. 고유 한 사용자 정의 도움말 컨텐츠를 제공하려면 정적 HTML 도움말 페이지 또는 사용자 정의 도움말 페이지를 리턴하는 엔드 포인트에 대한 URL을 제공해야합니다 (참조한 기사에서 설명한대로).
감사합니다.

+0

나는이 길로 내려 가야 할지도 모르겠다는 생각에 내일이 길을 더 보게 될 것이다. – WebDevNewbie

+0

몇 가지 추가 연구를 수행 한 후 현재 정적 HTML 페이지로 이동하기로 결정했습니다. 이것에 대한 설명 주셔서 감사합니다. – WebDevNewbie

0
<endpoint listenUri="soap" name="soap" address="http://servicesdev.mySite.com/services/Service.svc/soap" binding="basicHttpBinding" bindingConfiguration="serviceBinding" contract="ServicesLib.IService" behaviorConfiguration="restBehavior" /> 
     <endpoint listenUri="soap12" name="soap12" address="http://servicesdev.mySite.com/services/Service.svc/soap12" binding="wsHttpBinding" bindingConfiguration="serbviceWsBinding" contract="ServicesLib.IService" behaviorConfiguration="soapBehavior" /> 

    <endpointBehaviors> 
      <behavior name="restBehavior"> 
      <webHttp helpEnabled="true"/> 
      </behavior> 
      <behavior name="soapBehavior"> 
      <webHttp helpEnabled="true" /> 
      </behavior> 
    </endpointBehaviors> 
+0

두 끝점 모두 비누이며 게시 한 코드를 시도하면 추가 오류가 발생합니다. "*의 끝점에는 None MessageVersion이있는 바인딩이 없습니다. '* .WebHttpBehavior'는 WebHttpBinding 또는 이와 유사한 바인딩과 함께 사용하기위한 것입니다." 이것을 검색하면 SOAP 엔드 포인트가 'webHttp'비헤이비어를 전혀 가질 수 없으므로 EndpointBehaviors가 작동하지 않는 것처럼 보입니다. – WebDevNewbie