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)

Source:
InstanceContext.cs
Source:
InstanceContext.cs
Source:
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 则不会创建消息,并且不会创建任何服务对象,因此在实际需要之前不会部署资源。

适用于