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)
- Исходный код:
- InstanceContext.cs
- Исходный код:
- InstanceContext.cs
- Исходный код:
- InstanceContext.cs
Возвращает экземпляр службы для контекста экземпляра в ответ на входящее сообщение.
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 пока фактически не требуются.