<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 Services and ASP.NET. |
minFreeMemoryPercentageToActivateService |
Целое число, которое задает минимальный объем свободной памяти, который должен быть доступен системе перед активированием службы WCF.
Внимание!
Установка этого атрибута вместе с частичным доверием в файле web.config службы WCF приводит к возникновению исключения SecurityException при запуске службы.
|
multipleSiteBindingsEnabled |
Логическое значение, которое определяет, разрешается ли использование нескольких привязок IIS для одного узла. Службы IIS состоят из веб-узлов, являющихся контейнерами виртуальных приложений, содержащих виртуальные каталоги. Доступ к приложению на узле можно осуществлять через одну или несколько привязок IIS. Привязка IIS предоставляет два блока данных: протокол привязки и данные привязки. Протокол привязки определяет схему, посредством которой осуществляется связь, а данные привязки содержат сведения, используемые для доступа к узлу. Примером протокола привязки является HTTP, в котором данные привязки могут содержать IP-адрес, порт, заголовок узла и т. п. IIS поддерживает задание нескольких привязок IIS для каждого узла, что позволяет использовать несколько базовых адресов для каждой схемы. Однако служба Windows Communication Foundation (WCF), размещаемая на узле, разрешает привязку только к одному базовому адресу для каждой схемы. Чтобы разрешить службе Windows Communication Foundation (WCF) использование нескольких привязок IIS для одного узла, присвойте этому атрибуту значение true. Следует иметь в виду, что привязки к нескольким узлам поддерживаются только в протоколе HTTP. Адрес конечной точки в файле конфигурации должен быть полным URI. |
Дочерние элементы
Элемент | Описание |
---|---|
Коллекция элементов конфигурации, которые задают префиксные фильтры для базовых адресов, используемых узлом службы. |
|
Раздел конфигурации, в котором описываются параметры активации. |
|
Коллекция элементов конфигурации, которые определяют тип конкретного транспорта. |
Родительские элементы
Элемент | Описание |
---|---|
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"/>
См. также
Справочник
ServiceHostingEnvironmentSection
ServiceHostingEnvironment