InstanceContext.GetServiceInstance Метод

Определение

Возвращает экземпляр службы.

Перегрузки

GetServiceInstance()

Возвращает экземпляр службы для контекста экземпляра.

GetServiceInstance(Message)

Возвращает экземпляр службы для контекста экземпляра в ответ на входящее сообщение.

GetServiceInstance()

Возвращает экземпляр службы для контекста экземпляра.

public:
 System::Object ^ GetServiceInstance();
public object GetServiceInstance ();
member this.GetServiceInstance : unit -> obj
Public Function GetServiceInstance () As Object

Возвращаемое значение

Object

Объект, представляющий экземпляр службы.

Исключения

Экземпляр службы находится в состоянии создания или открытия, либо он не инициализирован.

Экземпляр службы прерван.

Экземпляр службы уже закрыт и не может быть изменен в этом состоянии.

Экземпляр службы находится в состоянии сбоя и не может быть изменен в этом состоянии.

Примеры

Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/service");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.Open();
    OperationContext operationContext = OperationContext.Current;
    InstanceContext instanceContext = operationContext.InstanceContext;
    CalculatorService service = (CalculatorService) instanceContext.GetServiceInstance();
}

Применяется к

GetServiceInstance(Message)

Возвращает экземпляр службы для контекста экземпляра в ответ на входящее сообщение.

public:
 System::Object ^ GetServiceInstance(System::ServiceModel::Channels::Message ^ message);
public object GetServiceInstance (System.ServiceModel.Channels.Message message);
member this.GetServiceInstance : System.ServiceModel.Channels.Message -> obj
Public Function GetServiceInstance (message As Message) As Object

Параметры

message
Message

Входящее сообщение, вызвавшее создание объекта службы.

Возвращаемое значение

Object

Объект, представляющий экземпляр службы.

Исключения

Экземпляр службы находится в состоянии создания или открытия, либо он не инициализирован.

Экземпляр службы прерван.

Экземпляр службы уже закрыт и не может быть изменен в этом состоянии.

Экземпляр службы находится в состоянии сбоя и не может быть изменен в этом состоянии.

Примеры

Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/service");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.Open();
    OperationContext operationContext = OperationContext.Current;
    InstanceContext instanceContext = operationContext.InstanceContext;
    CalculatorService service = (CalculatorService)instanceContext.GetServiceInstance(msg);
}

Комментарии

Общая идея заключается в том, что экземпляр службы создается только при получении сообщения, отправленного этой службе, путем вызова метода Open. Если сообщение не приходит, ни объект InstanceContext, ни объект службы не создается, тем самым ресурсы выделяются только в том случае, когда они действительно нужны.

Применяется к