<serviceHostingEnvironment>

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

<Конфигурации>
  <system.serviceModel>
    <serviceHostingEnvironment>

Синтаксис

<serviceHostingEnvironment aspNetCompatibilityEnabled="Boolean"
                           minFreeMemoryPercentageToActivateService="Integer"
                           multipleSiteBindingsEnabled="Boolean">
  <baseAddressPrefixFilters>
    <add prefix="string" />
  </baseAddressPrefixFilters>
  <serviceActivations>
    <add factory="String"
         service="String" />
  </serviceActivations>
  <transportConfigurationTypes>
    <add name="String"
         transportConfigurationType="String" />
  </transportConfigurationTypes>
</serviceHostingEnvironment>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Описание
aspNetCompatibilityEnabled Логическое значение, указывающее, включен ли режим совместимости ASP.NET для текущего приложения. Значение по умолчанию — false.

Если для этого атрибута задано значение true, запросы к службам Windows Communication Foundation (WCF) проходят через конвейер HTTP ASP.NET, а обмен данными по протоколам, отличным от HTTP, запрещен. Дополнительные сведения см. в статье Службы WCF и ASP.NET.
minFreeMemoryPercentageToActivateService Целое число, указывающее минимальный объем свободной памяти, который должен быть доступен системе перед активацией службы WCF. Осторожностью: Указание этого атрибута вместе с частичным доверием в файле web.config службы WCF приведет к созданию SecurityException при запуске службы.
multipleSiteBindingsEnabled Логическое значение, которое определяет, разрешается ли использование нескольких привязок IIS для одного узла.

Службы IIS состоят из веб-узлов, являющихся контейнерами виртуальных приложений, содержащих виртуальные каталоги. Доступ к приложению на узле можно осуществлять через одну или несколько привязок IIS. Привязка IIS предоставляет два блока данных: протокол привязки и данные привязки. Протокол привязки определяет схему, посредством которой осуществляется связь, а данные привязки содержат сведения, используемые для доступа к узлу. Примером протокола привязки является HTTP, в котором данные привязки могут содержать IP-адрес, порт, заголовок узла и т. п.

IIS поддерживает задание нескольких привязок IIS для каждого узла, что позволяет использовать несколько базовых адресов для каждой схемы. Однако служба Windows Communication Foundation (WCF), размещенная на сайте, позволяет привязывать только один baseAddress для каждой схемы.

Чтобы включить несколько привязок IIS для каждого сайта для службы Windows Communication Foundation (WCF), задайте для этого атрибута значение true. Следует иметь в виду, что привязки к нескольким узлам поддерживаются только в протоколе HTTP. Адрес конечной точки в файле конфигурации должен быть полным URI.

Дочерние элементы

Элемент Описание
<baseAddressPrefixFilters> Коллекция элементов конфигурации, которые задают префиксные фильтры для базовых адресов, используемых узлом службы.
<serviceActivations> Раздел конфигурации, в котором описываются параметры активации.
<transportConfigurationTypes> Коллекция элементов конфигурации, которые определяют тип конкретного транспорта.

Родительские элементы

Элемент Описание
serviceModel Корневой элемент всех элементов конфигурации Windows Communication Foundation (WCF).

Комментарии

По умолчанию службы WCF выполняются параллельно с ASP.NET в размещенных доменах приложений (AppDomain). Хотя WCF и ASP.NET могут существовать вместе в одном домене приложений, по умолчанию конвейер HTTP ASP.NET не обрабатывает запросы WCF. В результате несколько элементов платформы приложений ASP.NET будут недоступны службам WCF. К ним относятся

  • Авторизация файла/URL-адреса ASP.NET

  • Олицетворение ASP.NET

  • Состояние сеанса на основании файлов Cookie

  • HttpContext.Current

  • Расширяемость конвейера через настраиваемый элемент HttpModule

Если службам WCF нужно функционировать в контексте ASP.NET и взаимодействовать только по протоколу HTTP, можно использовать режим совместимости ASP.NET WCF. Этот режим включается, когда атрибут aspNetCompatibilityEnabled имеет значение true на уровне приложения. В реализации службы должна быть объявлена возможность выполнения в режиме совместимости с помощью класса AspNetCompatibilityRequirementsAttribute. Если режим совместимости включен, это приводит к следующему.

  • Авторизация файла/URL-адреса ASP.NET принудительно выполняется до авторизации WCF. Решение об авторизации основано на удостоверении запроса уровня транспорта. Удостоверения уровня сообщения не учитываются.

  • Операции служб WCF начинают выполняться в контексте олицетворения ASP.NET. Если для конкретной службы включены и олицетворение ASP.NET, и олицетворение WCF, применяется контекст олицетворения WCF.

  • HttpContext.Current может использоваться из кода службы WCF, и предотвращается представление службами конечных точек, работающих по протоколу, отличному от HTTP.

  • Запросы WCF обрабатываются конвейером ASP.NET. Элемент HttpModules, заданный для обработки входящих запросов, также может обрабатывать запросы WCF. Они могут включать компоненты платформы ASP.NET (например, SessionStateModule), а также настраиваемые модули сторонних поставщиков.

Пример

В следующем образце кода показано, как включить режим совместимости ASP.

Код

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

См. также раздел