Отображение операций веб-службы WCF - PullRequest
4 голосов
/ 03 февраля 2011

Итак, я создал приложение службы WCF и разместил его на IIS7.В настоящее время у него есть несколько тестовых методов helloworld.Когда я запускаю его в своем браузере, я получаю этот экран: enter image description here

Теперь сам сервис работает отлично, но как я могу отображать операции следующим образом: enter image description here

Благодаря marc_sдля ссылки: http://www.dotnetcurry.com/ShowArticle.aspx?ID=399, по которой я следовал, поэтому моя веб-конфигурация теперь настроена так:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="WcfServer.Service1">
        <endpoint address="" binding="webHttpBinding" contract="WcfServer.IService1" behaviorConfiguration="HelpBehaviour" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="AjaxBehavior">
          <enableWebScript />
        </behavior>
        <behavior name="HelpBehaviour">
          <webHttp helpEnabled="true"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
        <directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension" />
  </system.webServer>
</configuration>

Однако это работает только локально.Когда я публикую на своем сервере IIS7, я получаю страницу ошибки 404, когда нажимаю на ссылку справки.Кто-нибудь знает, почему это так, или сталкивался с этим раньше?

(Последний бит был решен с помощью команды: aspnet_regiis.exe -iru)

1 Ответ

9 голосов
/ 03 февраля 2011

Если у вас есть служба WCF с привязкой SOAP, вам, к сожалению, не повезло: в WCF нет возможности получить список, аналогичный ASMX, со всеми службами.

При использовании привязки REST (webHttpBinding) и .NET 4.0 вы можете создать автоматически созданную страницу справки, в которой перечислены шаблоны URI, поддерживаемые методы HTTP и т. Д.Вы также можете настроить эту страницу в определенной степени.

Чтобы автоматически сгенерировать эту страницу справки, вам нужно определить (и сослаться) поведение конечной точки:

<behaviors>
   <endpointBehaviors>
       <behavior name="HelpBehavior">
           <webHttp helpEnabled="true" />
       </behavior>
   </endpointBehaviors>
</behaviors>

Затем сделайте ссылкуэто поведение с вашей webHttpBinding конечной точки, и все готово.

Узнайте все об этом:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...