InstanceContext.GetServiceInstance Метод

Определение

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

Перегрузки

GetServiceInstance()

Возвращает экземпляр службы для контекста экземпляра.Returns the instance of the service for the instance context.

GetServiceInstance(Message)

Возвращает экземпляр службы для контекста экземпляра в ответ на входящее сообщение.Returns the instance of the service for the instance context in response to an incoming message.

GetServiceInstance()

Возвращает экземпляр службы для контекста экземпляра.Returns the instance of the service for the instance context.

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

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

Объект, представляющий экземпляр службы.The object that represents the service instance.

Исключения

Экземпляр службы находится в состоянии создания или открытия, либо он не инициализирован.The service instance is in a created or opening state or is not initialized.

Экземпляр службы прерван.The service instance is aborted.

Экземпляр службы уже закрыт и не может быть изменен в этом состоянии.The service instance has been closed already and cannot be modified in these states.

Экземпляр службы находится в состоянии сбоя и не может быть изменен в этом состоянии.The service instance is faulted and cannot be modified in these states.

Примеры

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)

Возвращает экземпляр службы для контекста экземпляра в ответ на входящее сообщение.Returns the instance of the service for the instance context in response to an incoming 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

Параметры

message
Message

Входящее сообщение, вызвавшее создание объекта службы.The incoming message that triggered the creation of a service object.

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

Объект, представляющий экземпляр службы.The object that represents the service instance.

Исключения

Экземпляр службы находится в состоянии создания или открытия, либо он не инициализирован.The service instance is in a created or opening state or is not initialized.

Экземпляр службы прерван.The service instance is aborted.

Экземпляр службы уже закрыт и не может быть изменен в этом состоянии.The service instance has been closed already and cannot be modified in these states.

Экземпляр службы находится в состоянии сбоя и не может быть изменен в этом состоянии.The service instance is faulted and cannot be modified in these states.

Примеры

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, ни объект службы не создается, тем самым ресурсы выделяются только в том случае, когда они действительно нужны.The general idea is that you only create an instance of the service when a message directed at it arrives, by calling Open; then if no message arrives, no InstanceContext is created and no service object is created, and so resources are not deployed until actually required.

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