WebServiceHost 类

定义

一个 ServiceHost 派生类,用于补充 Windows Communication Foundation (WCF) REST 编程模型。

public ref class WebServiceHost : System::ServiceModel::ServiceHost
public class WebServiceHost : System.ServiceModel.ServiceHost
type WebServiceHost = class
    inherit ServiceHost
Public Class WebServiceHost
Inherits ServiceHost
继承
派生

示例

以下示例演示如何使用 WebServiceHost 类来托管使用 WCF REST 编程模型的服务。

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    [WebInvoke(UriTemplate = "add?x={x}&y={y}")]
    long Add(long x, long y);

    [OperationContract]
    [WebInvoke(UriTemplate = "sub?x={x}&y={y}")]
    long Subtract(long x, long y);

    [OperationContract]
    [WebInvoke(UriTemplate = "mult?x={x}&y={y}")]
    long Multiply(long x, long y);

    [OperationContract]
    [WebInvoke(UriTemplate = "div?x={x}&y={y}")]
    long Divide(long x, long y);

    [OperationContract]
    [WebGet(UriTemplate = "hello?name={name}")]
    string SayHello(string name);
}

public class CalcService : ICalculator
{
    public long Add(long x, long y)
    {
        return x + y;
    }

    public long Subtract(long x, long y)
    {
        return x - y;
    }

    public long Multiply(long x, long y)
    {
        return x * y;
    }

    public long Divide(long x, long y)
    {
        return x / y;
    }

    public string SayHello(string name)
    {
        return "Hello " + name;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Uri baseAddress = new Uri("http://localhost:8000/");

        WebServiceHost svcHost = new WebServiceHost(typeof(CalcService), baseAddress);

        try
        {
            svcHost.Open();

            Console.WriteLine("Service is running");
            Console.WriteLine("Press enter to quit...");
            Console.ReadLine();

            svcHost.Close();
        }
        catch (CommunicationException cex)
        {
            Console.WriteLine("An exception occurred: {0}", cex.Message);
            svcHost.Abort();
        }
    }
}
<ServiceContract()> _
Public Interface ICalculator
    <OperationContract()> _
    <WebInvoke(UriTemplate:="add?x={x}&y={y}")> _
    Function Add(ByVal x As Long, ByVal y As Long) As Long

    <OperationContract()> _
    <WebInvoke(UriTemplate:="sub?x={x}&y={y}")> _
    Function Subtract(ByVal x As Long, ByVal y As Long) As Long

    <OperationContract()> _
    <WebInvoke(UriTemplate:="mult?x={x}&y={y}")> _
    Function Multiply(ByVal x As Long, ByVal y As Long) As Long

    <OperationContract()> _
    <WebInvoke(UriTemplate:="div?x={x}&y={y}")> _
    Function Divide(ByVal x As Long, ByVal y As Long) As Long

    <OperationContract()> _
    <WebGet(UriTemplate:="hello?name={name}")> _
    Function SayHello(ByVal name As String) As String
End Interface

Public Class CalcService
    Implements ICalculator
    Public Function Add(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Add
        Return x + y
    End Function

    Public Function Subtract(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Subtract
        Return x - y
    End Function

    Public Function Multiply(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Multiply
        Return x * y
    End Function

    Public Function Divide(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Divide
        Return x / y
    End Function

    Public Function SayHello(ByVal name As String) As String Implements ICalculator.SayHello
        Return "Hello " + name
    End Function
End Class

注解

如果在 WebServiceHost 服务说明中找不到任何终结点,则它会自动在 HTTP 和 HTTPS 基址的服务基址上创建默认终结点。 如果用户在基址上显式配置了终结点,则不会自动创建终结点。 WebServiceHost会自动配置终结点的绑定,以在安全虚拟目录中使用关联的Internet Information Services(IIS)安全设置。

创建默认 HTTP 终结点时, WebServiceHost 还会禁用 HTTP 帮助页和 Web 服务描述语言 (WSDL) GET 功能,以便元数据终结点不会干扰默认 HTTP 终结点。

此外,该WebServiceHost类还会向尚未具有行为且具有行为WebHttpBehavior的所有终结点添加 WebMessageEncodingElement 。 如果服务上的所有操作都具有空的 HTTP 请求正文或以流的形式处理 HTTP 请求正文,则 WebServiceHost 会自动为绑定配置适当的内容类型映射器。

构造函数

名称 说明
WebServiceHost()

初始化 WebServiceHost 类的新实例。

WebServiceHost(Object, Uri[])

使用指定的单一实例服务器实例和基址初始化类的新实例 WebServiceHost

WebServiceHost(Type, Uri[])

使用指定的服务类型和基址初始化类的新实例 WebServiceHost

属性

名称 说明
Authentication

获取服务身份验证行为。

(继承自 ServiceHostBase)
Authorization

获取托管的服务的授权行为。

(继承自 ServiceHostBase)
BaseAddresses

获取托管服务使用的基址。

(继承自 ServiceHostBase)
ChannelDispatchers

获取服务主机使用的通道调度程序集合。

(继承自 ServiceHostBase)
CloseTimeout

获取或设置允许服务主机关闭的时间间隔。

(继承自 ServiceHostBase)
Credentials

获取托管服务的凭据。

(继承自 ServiceHostBase)
DefaultCloseTimeout

获取允许服务主机关闭的默认时间间隔。

(继承自 ServiceHostBase)
DefaultOpenTimeout

获取允许服务主机打开的默认时间间隔。

(继承自 ServiceHostBase)
Description

获取托管服务的说明。

(继承自 ServiceHostBase)
Extensions

获取当前指定的服务主机的扩展。

(继承自 ServiceHostBase)
ImplementedContracts

检索由托管服务实现的协定。

(继承自 ServiceHostBase)
IsDisposed

获取一个值,该值指示是否已释放通信对象。

(继承自 CommunicationObject)
ManualFlowControlLimit

获取或设置托管服务接收的消息的流控制限制。

(继承自 ServiceHostBase)
OpenTimeout

获取或设置允许服务主机打开的时间间隔。

(继承自 ServiceHostBase)
SingletonInstance

获取托管服务的单一实例。

(继承自 ServiceHost)
State

获取一个值,该值指示通信对象的当前状态。

(继承自 CommunicationObject)
ThisLock

获取在状态转换期间保护类实例的互斥锁。

(继承自 CommunicationObject)

方法

名称 说明
Abort()

使通信对象立即从其当前状态转换为结束状态。

(继承自 CommunicationObject)
AddBaseAddress(Uri)

将基址添加到服务主机。

(继承自 ServiceHostBase)
AddDefaultEndpoints()

使用默认绑定为服务主机中找到的每个协定中的所有基址添加服务终结点。

(继承自 ServiceHostBase)
AddServiceEndpoint(ServiceEndpoint)

将指定的服务终结点添加到托管服务。

(继承自 ServiceHostBase)
AddServiceEndpoint(String, Binding, String, Uri)

使用指定的协定、绑定、终结点地址和 URI 将服务终结点添加到托管服务,其中包含它侦听的地址。

(继承自 ServiceHostBase)
AddServiceEndpoint(String, Binding, String)

使用指定的协定、绑定和终结点地址将服务终结点添加到托管服务。

(继承自 ServiceHostBase)
AddServiceEndpoint(String, Binding, Uri, Uri)

使用包含终结点和侦听地址的指定协定、绑定和 URI 将服务终结点添加到托管服务。

(继承自 ServiceHostBase)
AddServiceEndpoint(String, Binding, Uri)

使用指定的协定、绑定和包含终结点地址的 URI 将服务终结点添加到托管服务。

(继承自 ServiceHostBase)
AddServiceEndpoint(Type, Binding, String, Uri)

使用指定的协定、绑定、终结点地址和服务侦听的 URI 将服务终结点添加到托管服务。

(继承自 ServiceHost)
AddServiceEndpoint(Type, Binding, String)

使用指定的协定、绑定和终结点地址将服务终结点添加到托管服务。

(继承自 ServiceHost)
AddServiceEndpoint(Type, Binding, Uri, Uri)

使用指定的协定、绑定、包含终结点地址的 URI 以及服务侦听的 URI 将服务终结点添加到托管服务。

(继承自 ServiceHost)
AddServiceEndpoint(Type, Binding, Uri)

使用包含终结点地址的指定协定、绑定和 URI 将服务终结点添加到托管服务。

(继承自 ServiceHost)
ApplyConfiguration()

从配置文件加载服务说明,并将其应用于正在构造的运行时。

(继承自 ServiceHost)
BeginClose(AsyncCallback, Object)

开始异步操作以关闭通信对象。

(继承自 CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

开始异步操作以关闭具有指定超时的通信对象。

(继承自 CommunicationObject)
BeginOpen(AsyncCallback, Object)

开始异步操作以打开通信对象。

(继承自 CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

开始一个异步操作,以在指定的时间间隔内打开通信对象。

(继承自 CommunicationObject)
Close()

使通信对象从其当前状态转换为关闭状态。

(继承自 CommunicationObject)
Close(TimeSpan)

使通信对象在指定的时间间隔内从其当前状态转换为关闭状态。

(继承自 CommunicationObject)
CreateDescription(IDictionary<String,ContractDescription>)

创建托管服务的说明。

(继承自 ServiceHost)
EndClose(IAsyncResult)

完成异步操作以关闭通信对象。

(继承自 CommunicationObject)
EndOpen(IAsyncResult)

完成异步操作以打开通信对象。

(继承自 CommunicationObject)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
Fault()

使通信对象从其当前状态过渡到错误状态。

(继承自 CommunicationObject)
GetCommunicationObjectType()

获取通信对象的类型。

(继承自 CommunicationObject)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
IncrementManualFlowControlLimit(Int32)

按指定的增量将消息流速率限制到托管服务。

(继承自 ServiceHostBase)
InitializeDescription(Object, UriSchemeKeyedCollection)

初始化基于其实例和指定基址托管的服务的说明。

(继承自 ServiceHost)
InitializeDescription(Type, UriSchemeKeyedCollection)

初始化基于其类型和指定基址托管的服务的说明。

(继承自 ServiceHost)
InitializeDescription(UriSchemeKeyedCollection)

使用协定和服务说明创建和初始化服务主机。

(继承自 ServiceHostBase)
InitializeRuntime()

初始化服务主机的运行时。

(继承自 ServiceHostBase)
LoadConfigurationSection(ServiceElement)

从托管服务的配置文件加载服务元素。

(继承自 ServiceHostBase)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
OnAbort()

中止服务。

(继承自 ServiceHostBase)
OnBeginClose(TimeSpan, AsyncCallback, Object)

开始在服务主机关闭时调用的异步操作。

(继承自 ServiceHostBase)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

开始在打开服务主机时调用的异步操作。

(继承自 ServiceHostBase)
OnClose(TimeSpan)

关闭托管服务,包括其通道调度程序和关联的实例上下文和侦听器。

(继承自 ServiceHostBase)
OnClosed()

释放服务主机关闭时托管的可释放服务。

(继承自 ServiceHost)
OnClosing()

在将通信对象转换为结束状态期间调用。

(继承自 CommunicationObject)
OnEndClose(IAsyncResult)

完成在服务主机关闭时调用的异步操作。

(继承自 ServiceHostBase)
OnEndOpen(IAsyncResult)

完成在打开服务主机时调用的异步操作。

(继承自 ServiceHostBase)
OnFaulted()

在通信对象由于调用同步故障操作而转换为错误状态后,在通信对象上插入处理。

(继承自 CommunicationObject)
OnOpen(TimeSpan)

打开通道调度程序。

(继承自 ServiceHostBase)
OnOpened()

获取托管服务的服务凭据、服务身份验证和授权行为。

(继承自 ServiceHostBase)
OnOpening()

实例打开时 WebServiceHost 调用。

Open()

使通信对象从创建的状态转换为打开状态。

(继承自 CommunicationObject)
Open(TimeSpan)

使通信对象在指定的时间间隔内从创建的状态转换为打开状态。

(继承自 CommunicationObject)
ReleasePerformanceCounters()

释放托管服务的服务和通道调度程序性能计数器。

(继承自 ServiceHostBase)
SetEndpointAddress(ServiceEndpoint, String)

将指定终结点的终结点地址设置为指定地址。

(继承自 ServiceHostBase)
ThrowIfDisposed()

如果释放通信对象,则引发异常。

(继承自 CommunicationObject)
ThrowIfDisposedOrImmutable()

如果未将属性设置为State状态的通信对象Created,则引发异常。

(继承自 CommunicationObject)
ThrowIfDisposedOrNotOpen()

如果通信对象未处于 Opened 状态,则引发异常。

(继承自 CommunicationObject)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

活动

名称 说明
Closed

当通信对象转换为关闭状态时发生。

(继承自 CommunicationObject)
Closing

当通信对象转换为结束状态时发生。

(继承自 CommunicationObject)
Faulted

当通信对象转换为错误状态时发生。

(继承自 CommunicationObject)
Opened

当通信对象转换为打开状态时发生。

(继承自 CommunicationObject)
Opening

当通信对象转换为打开状态时发生。

(继承自 CommunicationObject)
UnknownMessageReceived

收到未知消息时发生。

(继承自 ServiceHostBase)

显式接口实现

名称 说明
IDisposable.Dispose()

关闭服务主机。

(继承自 ServiceHostBase)

适用于