Что такое атрибут службы поведения_конфигурации? - PullRequest
21 голосов
/ 23 июня 2011

что такое атрибут службы поведения_конфигурации? 1001 *

<services>
      <service name="WcfServiceNetMSMQ.Service1" behaviorConfiguration="WcfServiceNetMSMQ.Service1Behavior">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8010/WcfServiceNetMSMQ/Service1/" />
          </baseAddresses>
        </host>
        <endpoint address ="net.msmq://localhost/private/myqueue" binding="netMsmqBinding" contract="WcfServiceNetMSMQ.IService1">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>

Ответы [ 4 ]

45 голосов
/ 23 июня 2011

При настройке службы WCF есть 3 важных раздела.

1) Определение услуг:

<services>
      <service behaviorConfiguration="SOAPRESTDemoBehavior" name="SOAPRESTDemo">
        <endpoint address="rest" behaviorConfiguration="SOAPRESTDemoEndpointBehavior" binding="webHttpBinding" contract="ISOAPRESTDemo" />
        <endpoint address="soap" binding="basicHttpBinding" contract="ISOAPRESTDemo" />
      </service>
    </services>

ПРИМЕЧАНИЕ. Значение свойстваConfiguration - это ссылка на раздел, приведенный ниже в конфигурации, см. Ниже ...

2) Определение «служебного поведения»

 <serviceBehaviors>
        <behavior name="SOAPRESTDemoBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>

3) Определение «поведения конечной точки»

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

Все 3 раздела являются основами того, что вам нужно для настройки службы (хотя это можно сделать программно).

Что касается вашего вопроса, то раздел поведенческой конфигурации относится к пунктам 2 и 3 в моих пунктах выше. Именно там вы выкладываете те действия, которые вы хотите, чтобы ваш сервис выполнял. Например, выше я сказал, что хочу разрешить публикацию метаданных. По существу, это создаст WSDL, который описывает сервис.

Полная конфигурация здесь:

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

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

  <system.serviceModel>

    <!--Set up the service-->
    <services>
      <service behaviorConfiguration="SOAPRESTDemoBehavior" name="SOAPRESTDemo">
        <endpoint address="rest" behaviorConfiguration="SOAPRESTDemoEndpointBehavior" binding="webHttpBinding" contract="ISOAPRESTDemo" />
        <endpoint address="soap" binding="basicHttpBinding" contract="ISOAPRESTDemo" />
      </service>
    </services>


    <!--Define the behaviours-->
    <behaviors>

      <serviceBehaviors>
        <behavior name="SOAPRESTDemoBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>

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

    </behaviors>

  </system.serviceModel>

</configuration>
28 голосов
/ 23 июня 2011

Это ссылка на другой раздел конфигурации:

<behaviors>
   <serviceBehaviors>
      <behavior name="WcfServiceNetMSMQ.Service1Behavior">

      </behaviors>
   </serviceBehaviors>
</behaviors>

Где этот раздел содержит глобальную конфигурацию для всей службы.

4 голосов
/ 23 июня 2011

Вот пример этого, он несет некоторые свойства подключения службы.

<serviceBehaviors>
<behavior name="WcfServiceNetMSMQ.Service1Behavior">
 <serviceMetadata httpGetEnabled="true" />
 <serviceDebug includeExceptionDetailInFaults="false" />
</behavior>

Обратите внимание, что name в этом поведении службы соответствует тому, который вы указали ранее.

Надеюсь, это поможет.

0 голосов
/ 24 июля 2013

Вы получите эту ошибку, если имя поведения настроено неправильно.

HTML-документ не содержит информации об обнаружении веб-службы.Метаданные содержат ссылку, которая не может быть разрешена: 'http://blabla.com/WebService/Processor.svc'. Тип содержимого application / soap + xml;charset = utf-8 не поддерживается службой 'http://blabla.com/WebService/Processor.svc'. Привязки клиента и службы могут не совпадать.Удаленный сервер возвратил ошибку: (415) Невозможно обработать сообщение, потому что тип содержимого 'application / soap + xml;charset = utf-8 'не был ожидаемым типом' text / xml;charset = utf-8 '.. Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.

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