@ServiceHost

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

Синтаксис

<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"
%>

Атрибуты

Служба

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

Factory

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

Отладка

Указывает, должна ли служба Windows Communication Foundation (WCF) компилироваться с отладочными символами. true Значение , если служба WCF должна компилироваться с отладочными символами; в противном случае — false.

Язык

Задает язык, используемый при компиляции всего встроенного кода в файле (SVC). Значения могут представлять любой объект . Язык, поддерживаемый NET, включая C#, VBи JS, которые ссылаются на C#, Visual Basic и JScript .NET соответственно. Этот атрибут является необязательным.

CodeBehind

Указывает исходный файл, реализующий веб-службу XML, если класс, реализующий веб-службу XML, не находится в одном файле и не был скомпилирован в сборку и помещен в каталог \Bin .

Комментарии

Объект , используемый ServiceHost для размещения службы, является точкой расширяемости в модели программирования Windows Communication Foundation (WCF). Для создания узла службы ServiceHost используется шаблон фабрики, поскольку он, возможно, имеет полиморфный тип, экземпляр которого среда размещения не должна создавать явно.

В реализации по умолчанию используется фабрика ServiceHostFactory для создания экземпляра узла службы ServiceHost. Но вы можете предоставить собственную фабрику (которая возвращает производный узел), указав имя типа CLR своей реализации фабрики в директиве @ServiceHost .

Чтобы использовать собственную фабрику узлов служб вместо фабрики по умолчанию, просто укажите имя типа в директиве @ServiceHost следующим образом.

<% @ServiceHost Factory="DerivedFactory" Service="MyService" %>

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

Например, чтобы включить конечную точку с поддержкой AJAX для MyService, укажите WebScriptServiceHostFactory для значения Factory атрибута вместо значения по умолчанию ServiceHostFactoryв директиве @ServiceHost , как показано в следующем примере:

<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>

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