2014-01-28 5 views
2

Я ищу, чтобы включить сгенерированные страницы справки для службы WCF, которая настроена с помощью <ServiceBehavior> вместо <EndpointBehavior>. 95% моих поисков приводит к чему-то связанному с <EndpointBehavior>, и то, что мало что можно найти для <ServiceBehavior>, либо без ответа, либо без деталей, либо просто не работает.Как включить страницы справки WCF через конфигурацию ServiceBehavior?

Я не являюсь создателем этой службы, которая размещена в IIS, но ей было поручено включить страницы справки для службы. Из того, что я нашел, я должен просто включить атрибут httpHelpPageEnabled под элементом ServiceDebug, но это ничего не делает, и добавление 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> 

Если это не правильный подход по какой-либо причине, возможно, кто-то может мне точку в правильном направлении хостинг пользовательских справки страницы? Я читал this post о решении для размещения одного из службы Windows, но я не уверен, как добавить это в службу WCF, которая будет размещаться рядом с сервисом таким же образом.

ответ

1

ServiceDebugElement HttpHelpPageEnabled и HttpHelpPageUrl свойства обеспечивают механизм, позволяющий пользовательской странице справки. Однако свойства не будут автоматически сообщать серверу о создании пользовательской страницы. Чтобы предоставить свой собственный контент справки, вам нужно указать URL-адрес для статической страницы справки html или конечной точки, которая возвращает страницу пользовательской справки (как описано в статье, на которую вы ссылались).
С уважением,

+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