WebServiceHost Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Производный класс ServiceHost, который дополняет модель программирования REST Windows Communication Foundation (WCF).
public ref class WebServiceHost : System::ServiceModel::ServiceHost
public class WebServiceHost : System.ServiceModel.ServiceHost
type WebServiceHost = class
inherit ServiceHost
Public Class WebServiceHost
Inherits ServiceHost
- Наследование
- Производный
Примеры
В следующем примере показано, как использовать WebServiceHost класс для размещения службы, которая использует модель программирования WCF REST.
[ServiceContract]
public interface ICalculator
{
[OperationContract]
[WebInvoke(UriTemplate = "add?x={x}&y={y}")]
long Add(long x, long y);
[OperationContract]
[WebInvoke(UriTemplate = "sub?x={x}&y={y}")]
long Subtract(long x, long y);
[OperationContract]
[WebInvoke(UriTemplate = "mult?x={x}&y={y}")]
long Multiply(long x, long y);
[OperationContract]
[WebInvoke(UriTemplate = "div?x={x}&y={y}")]
long Divide(long x, long y);
[OperationContract]
[WebGet(UriTemplate = "hello?name={name}")]
string SayHello(string name);
}
public class CalcService : ICalculator
{
public long Add(long x, long y)
{
return x + y;
}
public long Subtract(long x, long y)
{
return x - y;
}
public long Multiply(long x, long y)
{
return x * y;
}
public long Divide(long x, long y)
{
return x / y;
}
public string SayHello(string name)
{
return "Hello " + name;
}
}
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:8000/");
WebServiceHost svcHost = new WebServiceHost(typeof(CalcService), baseAddress);
try
{
svcHost.Open();
Console.WriteLine("Service is running");
Console.WriteLine("Press enter to quit...");
Console.ReadLine();
svcHost.Close();
}
catch (CommunicationException cex)
{
Console.WriteLine("An exception occurred: {0}", cex.Message);
svcHost.Abort();
}
}
}
<ServiceContract()> _
Public Interface ICalculator
<OperationContract()> _
<WebInvoke(UriTemplate:="add?x={x}&y={y}")> _
Function Add(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebInvoke(UriTemplate:="sub?x={x}&y={y}")> _
Function Subtract(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebInvoke(UriTemplate:="mult?x={x}&y={y}")> _
Function Multiply(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebInvoke(UriTemplate:="div?x={x}&y={y}")> _
Function Divide(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebGet(UriTemplate:="hello?name={name}")> _
Function SayHello(ByVal name As String) As String
End Interface
Public Class CalcService
Implements ICalculator
Public Function Add(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Add
Return x + y
End Function
Public Function Subtract(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Subtract
Return x - y
End Function
Public Function Multiply(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Multiply
Return x * y
End Function
Public Function Divide(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Divide
Return x / y
End Function
Public Function SayHello(ByVal name As String) As String Implements ICalculator.SayHello
Return "Hello " + name
End Function
End Class
Комментарии
Если WebServiceHost в описании службы не найдены конечные точки, она автоматически создает конечную точку по умолчанию в базовом адресе службы для базовых адресов HTTP и HTTPS. Он не создает конечную точку автоматически, если пользователь явно настроил конечную точку на базовом адресе. WebServiceHost автоматически настраивает привязку конечной точки для работы с связанными параметрами безопасности Internet Information Services (IIS) при использовании в защищенном виртуальном каталоге.
Также при создании HTTP конечной точки по умолчанию отключаются страница справки HTTP и функциональность GET языка описания веб-служб (WSDL), чтобы конечная точка метаданных не мешала работе HTTP конечной точки по умолчанию.
Кроме того, WebServiceHost класс добавляет WebHttpBehavior все конечные точки, которые еще не имеют поведения и имеют .WebMessageEncodingElement Если все операции со службой имеют пустые тела HTTP-запросов или занимаются текстом HTTP-запроса в виде потока, то WebServiceHost автоматически настраивает соответствующую схему типов контента для привязки.
Конструкторы
| Имя | Описание |
|---|---|
| WebServiceHost() |
Инициализирует новый экземпляр класса WebServiceHost. |
| WebServiceHost(Object, Uri[]) |
Инициализирует новый экземпляр WebServiceHost класса с указанным экземпляром одноэлементного сервера и базовым адресом. |
| WebServiceHost(Type, Uri[]) |
Инициализирует новый экземпляр WebServiceHost класса с указанным типом службы и базовым адресом. |
Свойства
| Имя | Описание |
|---|---|
| Authentication |
Возвращает поведение проверки подлинности службы. (Унаследовано от ServiceHostBase) |
| Authorization |
Возвращает поведение авторизации для размещенной службы. (Унаследовано от ServiceHostBase) |
| BaseAddresses |
Возвращает базовые адреса, используемые размещенной службой. (Унаследовано от ServiceHostBase) |
| ChannelDispatchers |
Возвращает коллекцию диспетчеров каналов, используемых узлом службы. (Унаследовано от ServiceHostBase) |
| CloseTimeout |
Возвращает или задает интервал времени, разрешенный для закрытия узла службы. (Унаследовано от ServiceHostBase) |
| Credentials |
Возвращает учетные данные для размещенной службы. (Унаследовано от ServiceHostBase) |
| DefaultCloseTimeout |
Возвращает интервал времени по умолчанию, разрешенный для закрытия узла службы. (Унаследовано от ServiceHostBase) |
| DefaultOpenTimeout |
Возвращает интервал времени по умолчанию, разрешенный для открытия узла службы. (Унаследовано от ServiceHostBase) |
| Description |
Возвращает описание размещенной службы. (Унаследовано от ServiceHostBase) |
| Extensions |
Возвращает расширения для текущего указанного узла службы. (Унаследовано от ServiceHostBase) |
| ImplementedContracts |
Извлекает контракты, реализованные размещенной службой. (Унаследовано от ServiceHostBase) |
| IsDisposed |
Возвращает значение, указывающее, был ли удален объект связи. (Унаследовано от CommunicationObject) |
| ManualFlowControlLimit |
Возвращает или задает ограничение управления потоком для сообщений, полученных размещенной службой. (Унаследовано от ServiceHostBase) |
| OpenTimeout |
Возвращает или задает интервал времени, разрешенный для открытия узла службы. (Унаследовано от ServiceHostBase) |
| SingletonInstance |
Возвращает одноэлементный экземпляр размещенной службы. (Унаследовано от ServiceHost) |
| State |
Возвращает значение, указывающее текущее состояние объекта связи. (Унаследовано от CommunicationObject) |
| ThisLock |
Получает взаимоисключающую блокировку, которая защищает экземпляр класса во время перехода состояния. (Унаследовано от CommunicationObject) |
Методы
| Имя | Описание |
|---|---|
| Abort() |
Вызывает немедленное переход объекта связи из текущего состояния в закрывающемся состоянии. (Унаследовано от CommunicationObject) |
| AddBaseAddress(Uri) |
Добавляет базовый адрес в узел службы. (Унаследовано от ServiceHostBase) |
| AddDefaultEndpoints() |
Добавляет конечные точки службы для всех базовых адресов в каждом контракте, найденном в узле службы, с привязкой по умолчанию. (Унаследовано от ServiceHostBase) |
| AddServiceEndpoint(ServiceEndpoint) |
Добавляет указанную конечную точку службы в размещенную службу. (Унаследовано от ServiceHostBase) |
| AddServiceEndpoint(String, Binding, String, Uri) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой, адресом конечной точки и универсальным кодом ресурса (URI), содержащим адрес, по которому он прослушивает. (Унаследовано от ServiceHostBase) |
| AddServiceEndpoint(String, Binding, String) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой и адресом конечной точки. (Унаследовано от ServiceHostBase) |
| AddServiceEndpoint(String, Binding, Uri, Uri) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой и URI, содержащими конечную точку и адреса прослушивания. (Унаследовано от ServiceHostBase) |
| AddServiceEndpoint(String, Binding, Uri) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой и универсальным кодом ресурса (URI), содержащим адрес конечной точки. (Унаследовано от ServiceHostBase) |
| AddServiceEndpoint(Type, Binding, String, Uri) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой, адресом конечной точки и универсальным кодом ресурса (URI), в котором служба прослушивает. (Унаследовано от ServiceHost) |
| AddServiceEndpoint(Type, Binding, String) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой и адресом конечной точки. (Унаследовано от ServiceHost) |
| AddServiceEndpoint(Type, Binding, Uri, Uri) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой, универсальным кодом ресурса (URI), содержащим адрес конечной точки, и универсальным кодом ресурса (URI), на котором прослушивается служба. (Унаследовано от ServiceHost) |
| AddServiceEndpoint(Type, Binding, Uri) |
Добавляет конечную точку службы в размещенную службу с указанным контрактом, привязкой и универсальным кодом ресурса (URI), содержащим адрес конечной точки. (Унаследовано от ServiceHost) |
| ApplyConfiguration() |
Загружает описание службы из файла конфигурации и применяет его к созданной среде выполнения. (Унаследовано от ServiceHost) |
| BeginClose(AsyncCallback, Object) |
Начинает асинхронную операцию закрытия объекта связи. (Унаследовано от CommunicationObject) |
| BeginClose(TimeSpan, AsyncCallback, Object) |
Начинает асинхронную операцию закрытия объекта связи с заданным временем ожидания. (Унаследовано от CommunicationObject) |
| BeginOpen(AsyncCallback, Object) |
Начинает асинхронную операцию для открытия объекта связи. (Унаследовано от CommunicationObject) |
| BeginOpen(TimeSpan, AsyncCallback, Object) |
Начинает асинхронную операцию открытия объекта связи в течение указанного интервала времени. (Унаследовано от CommunicationObject) |
| Close() |
Вызывает переход объекта связи из текущего состояния в закрытое состояние. (Унаследовано от CommunicationObject) |
| Close(TimeSpan) |
Вызывает переход объекта связи из текущего состояния в закрытое состояние в течение указанного интервала времени. (Унаследовано от CommunicationObject) |
| CreateDescription(IDictionary<String,ContractDescription>) |
Создает описание размещенной службы. (Унаследовано от ServiceHost) |
| EndClose(IAsyncResult) |
Завершает асинхронную операцию закрытия объекта связи. (Унаследовано от CommunicationObject) |
| EndOpen(IAsyncResult) |
Завершает асинхронную операцию для открытия объекта связи. (Унаследовано от CommunicationObject) |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| Fault() |
Вызывает переход объекта связи из текущего состояния в состояние сбоя. (Унаследовано от CommunicationObject) |
| GetCommunicationObjectType() |
Возвращает тип объекта связи. (Унаследовано от CommunicationObject) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IncrementManualFlowControlLimit(Int32) |
Увеличивает ограничение скорости потока сообщений в размещенную службу указанным шагом. (Унаследовано от ServiceHostBase) |
| InitializeDescription(Object, UriSchemeKeyedCollection) |
Инициализирует описание службы, размещенной на основе его экземпляра и указанных базовых адресов. (Унаследовано от ServiceHost) |
| InitializeDescription(Type, UriSchemeKeyedCollection) |
Инициализирует описание службы, размещенной на основе его типа и заданных базовых адресов. (Унаследовано от ServiceHost) |
| InitializeDescription(UriSchemeKeyedCollection) |
Создает и инициализирует узел службы с описанием контракта и службы. (Унаследовано от ServiceHostBase) |
| InitializeRuntime() |
Инициализирует среду выполнения для узла службы. (Унаследовано от ServiceHostBase) |
| LoadConfigurationSection(ServiceElement) |
Загружает элемент службы из файла конфигурации размещенной службы. (Унаследовано от ServiceHostBase) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| OnAbort() |
Прерывает работу службы. (Унаследовано от ServiceHostBase) |
| OnBeginClose(TimeSpan, AsyncCallback, Object) |
Начинает асинхронную операцию, вызванную при закрытии узла службы. (Унаследовано от ServiceHostBase) |
| OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Начинает асинхронную операцию, вызванную при открытии узла службы. (Унаследовано от ServiceHostBase) |
| OnClose(TimeSpan) |
Закрывает размещенную службу, включая диспетчеры каналов и связанные контексты экземпляров и прослушиватели. (Унаследовано от ServiceHostBase) |
| OnClosed() |
Удаляет удаленные службы, размещенные при закрытии узла службы. (Унаследовано от ServiceHost) |
| OnClosing() |
Вызывается во время перехода объекта связи в закрываемое состояние. (Унаследовано от CommunicationObject) |
| OnEndClose(IAsyncResult) |
Завершает асинхронную операцию, вызванную при закрытии узла службы. (Унаследовано от ServiceHostBase) |
| OnEndOpen(IAsyncResult) |
Завершает асинхронную операцию, вызванную при открытии узла службы. (Унаследовано от ServiceHostBase) |
| OnFaulted() |
Вставляет обработку в объект связи после перехода в состояние сбоя из-за вызова синхронной операции сбоя. (Унаследовано от CommunicationObject) |
| OnOpen(TimeSpan) |
Открывает диспетчеры каналов. (Унаследовано от ServiceHostBase) |
| OnOpened() |
Возвращает учетные данные службы, поведение проверки подлинности и авторизации службы для размещенной службы. (Унаследовано от ServiceHostBase) |
| OnOpening() |
Вызывается при открытии экземпляра WebServiceHost . |
| Open() |
Вызывает переход объекта связи из созданного состояния в открытое состояние. (Унаследовано от CommunicationObject) |
| Open(TimeSpan) |
Вызывает переход объекта связи из созданного состояния в открытое состояние в течение указанного интервала времени. (Унаследовано от CommunicationObject) |
| ReleasePerformanceCounters() |
Освобождает счетчики производительности диспетчера служб и каналов для размещенной службы. (Унаследовано от ServiceHostBase) |
| SetEndpointAddress(ServiceEndpoint, String) |
Задает адрес конечной точки указанной конечной точки указанным адресом. (Унаследовано от ServiceHostBase) |
| ThrowIfDisposed() |
Создает исключение, если объект связи удаляется. (Унаследовано от CommunicationObject) |
| ThrowIfDisposedOrImmutable() |
Вызывает исключение, если объект State связи, который свойство не задано для Created состояния. (Унаследовано от CommunicationObject) |
| ThrowIfDisposedOrNotOpen() |
Создает исключение, если объект связи не находится в Opened состоянии. (Унаследовано от CommunicationObject) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
События
| Имя | Описание |
|---|---|
| Closed |
Происходит при переходе объекта связи в закрытое состояние. (Унаследовано от CommunicationObject) |
| Closing |
Происходит при переходе объекта связи в состояние закрытия. (Унаследовано от CommunicationObject) |
| Faulted |
Происходит при переходе объекта связи в состояние сбоя. (Унаследовано от CommunicationObject) |
| Opened |
Происходит при переходе объекта связи в открытое состояние. (Унаследовано от CommunicationObject) |
| Opening |
Происходит при переходе объекта связи в открытое состояние. (Унаследовано от CommunicationObject) |
| UnknownMessageReceived |
Происходит при получении неизвестного сообщения. (Унаследовано от ServiceHostBase) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IDisposable.Dispose() |
Закрывает узел службы. (Унаследовано от ServiceHostBase) |