InstanceContext.GetServiceInstance Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает экземпляр службы.
Перегрузки
GetServiceInstance() |
Возвращает экземпляр службы для контекста экземпляра. |
GetServiceInstance(Message) |
Возвращает экземпляр службы для контекста экземпляра в ответ на входящее сообщение. |
GetServiceInstance()
Возвращает экземпляр службы для контекста экземпляра.
public:
System::Object ^ GetServiceInstance();
public object GetServiceInstance ();
member this.GetServiceInstance : unit -> obj
Public Function GetServiceInstance () As 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
Входящее сообщение, вызвавшее создание объекта службы.
Возвращаемое значение
Объект, представляющий экземпляр службы.
Исключения
Экземпляр службы находится в состоянии создания или открытия, либо он не инициализирован.
Экземпляр службы прерван.
Экземпляр службы уже закрыт и не может быть изменен в этом состоянии.
Экземпляр службы находится в состоянии сбоя и не может быть изменен в этом состоянии.
Примеры
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, ни объект службы не создается, тем самым ресурсы выделяются только в том случае, когда они действительно нужны.