it-roy-ru.com

Настройка служб wcf rest в web.config

Где в web.config должны идти следующие блоки кода для службы WCF RESTful?

<endpoint address="" binding="webHttpBinding"contract="Wcf_Test.IMyService"    
behaviorConfiguration="httpEndpointBehavour"> 
    <identity> 
        <dns value="localhost"/> 
    <Identity>  
</endpoint>

а также

<behaviors>
    <serviceBehaviors> 
        <behavior name="httpBehaviour"> <serviceMetadata httpGetEnabled="True"/>
            <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
    </serviceBehaviors>

а также

    <endpointBehaviors> 
        <behavior name="httpEndpointBehavour"> 
            <webHttp />
        </behavior> 
    </endpointBehaviors>
</behaviors>
8
user2059013

Чтобы настроить службу WCF REST, вам нужно несколько вещей в вашем файле web.config

1) Объявите ваш сервис и его конечную точку

<services>
  <service name="SparqlService.SparqlService" behaviorConfiguration="ServiceBehavior">
    <endpoint binding="webHttpBinding" contract="SparqlService.ISparqlService"
              behaviorConfiguration="webHttp"/>
  </service>
</services>

Имя службы будет [имя проекта]. [Имя службы] Конфигурация поведения будет иметь то же имя, что и поведение, которое вы объявите на следующем шаге Привязка должна быть webHttpBinding, потому что вы хотите, чтобы она была как REST. Если вы хотите SOAP, вы объявляете как basicHttpBinding Contract - это [имя проекта]. [Имя интерфейса] Конфигурация поведения в конечной точке будет именем, которое вы объявите на следующем шаге.

2) Объявить поведение службы (обычно по умолчанию)

    <behavior name="ServiceBehavior" >
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>

Имя поведения может быть любым, но оно будет использоваться для соответствия конфигурации поведения, которую вы объявили на шаге 1 Оставьте все остальное в покое.

3) Объявите ваше поведение конечной точки

  <endpointBehaviors>
    <behavior name="webHttp">
      <webHttp/>
    </behavior>
  </endpointBehaviors>

Имя поведения может быть любым, но оно будет использоваться для соответствия поведению конфигурации в конечной точке.

В конце концов, вот как должен выглядеть web.config для простого REST сервиса:

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>

    <services>
      <service name="SparqlService.SparqlService" behaviorConfiguration="ServiceBehavior">
        <endpoint binding="webHttpBinding" contract="SparqlService.ISparqlService"
                  behaviorConfiguration="webHttp"/>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>

        <behavior name="ServiceBehavior" >
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>


        <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="webHttp">
          <webHttp/>
        </behavior>
      </endpointBehaviors>

    </behaviors>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>
28
Charlie Ou Yang

для остальных, используя сервис WCF

<configuration>
    <system.serviceModel> 
       <services> 
          <service>
    <--
       "place the first code snippet here "
        it will contain the endpoint details
        for WCFrestfulServices it will have 'A' ,'B' and 'C'
        that is address, binding and contract
    -->
          </service>
       </services>
       <behaviors>
       <servicebehaviours>
    <--
       "place the second code snippet"
       the name of the behavior should be the same to that of the
       behavior configuration attribute value of service tag
    -->
      </servicebehaviours>
      <endpointBehaviors>
    <--
       "place your third code snippet"
       the name of the behavior should be the same to that of the
       behavior configuration attribute value of endpoint tag
    -->
      </endpointBehaviors>
       </behaviors>
    </system.serviceModel> 
</configuration>
1
Gabbru

Изменения веб-конфигурации.

<system.serviceModel>
    <services>
      <service name="WcfService1.Service1">
        <endpoint address="" behaviorConfiguration="restbehavior" binding="webHttpBinding" bindingConfiguration=""
                  contract ="WcfService1.IBookService">          
        </endpoint>
        <Host>
          <baseAddresses>
            <add baseAddress="http://localhost/bookservice"/>
          </baseAddresses>
        </Host>                
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="restbehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>   
  </system.serviceModel>

Интерфейс: мы должны использовать WebGet для httpGet/WebInvoke для HttpPost & Put & Delete.

 [ServiceContract]
    public interface IBookService
    {
        [OperationContract]
        [WebGet]
        List<BOOK> GetBooksList();

        [OperationContract]
        [WebGet(UriTemplate = "Book/{id}")]
        BOOK GetBookById(string id);

        [OperationContract]
        [WebInvoke(UriTemplate = "AddBook/{name}")]
        void AddBook(string name);
}

Ссылка: https://www.codeproject.com/Articles/571813/A-Beginners-Tutorial-on-Creating-WCF-REST-Services

0
Jay