ServiceHostBase 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
ServiceHostBase扩展类以实现公开自定义编程模型的主机。
public ref class ServiceHostBase abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::IExtensibleObject<System::ServiceModel::ServiceHostBase ^>
public abstract class ServiceHostBase : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.IExtensibleObject<System.ServiceModel.ServiceHostBase>
type ServiceHostBase = class
inherit CommunicationObject
interface IExtensibleObject<ServiceHostBase>
interface IDisposable
Public MustInherit Class ServiceHostBase
Inherits CommunicationObject
Implements IDisposable, IExtensibleObject(Of ServiceHostBase)
- 继承
- 派生
- 实现
示例
此示例使用派生自ServiceHost的ServiceHostBase类。
// Host the service within this EXE console application.
public static void Main()
{
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService)))
{
try
{
// Open the ServiceHost to start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
// Close the ServiceHost.
serviceHost.Close();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine(timeProblem.Message);
Console.ReadLine();
}
catch (CommunicationException commProblem)
{
Console.WriteLine(commProblem.Message);
Console.ReadLine();
}
}
}
' Host the service within this EXE console application.
Public Shared Sub Main()
' Create a ServiceHost for the CalculatorService type and use the base address from config.
Using svcHost As New ServiceHost(GetType(CalculatorService))
Try
' Open the ServiceHost to start listening for messages.
svcHost.Open()
' The service can now be accessed.
Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()
'Close the ServiceHost.
svcHost.Close()
Catch timeout As TimeoutException
Console.WriteLine(timeout.Message)
Console.ReadLine()
Catch commException As CommunicationException
Console.WriteLine(commException.Message)
Console.ReadLine()
End Try
End Using
End Sub
注解
使用该 ServiceHostBase 类创建提供自定义编程模型的主机。 Windows Communication Foundation (WCF) 服务编程模型使用 ServiceHost 类。
对于派生自此类的托管 C++ 用户的特殊说明:
- 将清理代码置于 (On)(Begin)Close(and/或 OnAbort),而不是析构函数中。
- 避免析构函数;它们会导致编译器自动生成 IDisposable。
- 避免非引用成员;它们可能会导致编译器自动生成 IDisposable。
- 避免终结器;但是,如果包含一个,则应禁止生成警告和调用 SuppressFinalize(Object) 以及终结器本身从 (On)(Begin)Close (和/或 OnAbort) 模拟自动生成 IDisposable 的行为。
构造函数
| 名称 | 说明 |
|---|---|
| ServiceHostBase() |
初始化 ServiceHostBase 类的新实例。 |
属性
| 名称 | 说明 |
|---|---|
| Authentication |
获取服务身份验证行为。 |
| Authorization |
获取托管的服务的授权行为。 |
| BaseAddresses |
获取托管服务使用的基址。 |
| ChannelDispatchers |
获取服务主机使用的通道调度程序集合。 |
| CloseTimeout |
获取或设置允许服务主机关闭的时间间隔。 |
| Credentials |
获取托管服务的凭据。 |
| DefaultCloseTimeout |
获取允许服务主机关闭的默认时间间隔。 |
| DefaultOpenTimeout |
获取允许服务主机打开的默认时间间隔。 |
| Description |
获取托管服务的说明。 |
| Extensions |
获取当前指定的服务主机的扩展。 |
| ImplementedContracts |
检索由托管服务实现的协定。 |
| IsDisposed |
获取一个值,该值指示是否已释放通信对象。 (继承自 CommunicationObject) |
| ManualFlowControlLimit |
获取或设置托管服务接收的消息的流控制限制。 |
| OpenTimeout |
获取或设置允许服务主机打开的时间间隔。 |
| State |
获取一个值,该值指示通信对象的当前状态。 (继承自 CommunicationObject) |
| ThisLock |
获取在状态转换期间保护类实例的互斥锁。 (继承自 CommunicationObject) |
方法
活动
| 名称 | 说明 |
|---|---|
| Closed |
当通信对象转换为关闭状态时发生。 (继承自 CommunicationObject) |
| Closing |
当通信对象转换为结束状态时发生。 (继承自 CommunicationObject) |
| Faulted |
当通信对象转换为错误状态时发生。 (继承自 CommunicationObject) |
| Opened |
当通信对象转换为打开状态时发生。 (继承自 CommunicationObject) |
| Opening |
当通信对象转换为打开状态时发生。 (继承自 CommunicationObject) |
| UnknownMessageReceived |
收到未知消息时发生。 |
显式接口实现
| 名称 | 说明 |
|---|---|
| IDisposable.Dispose() |
关闭服务主机。 |