WebServiceHost 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一个 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) |
方法
活动
| 名称 | 说明 |
|---|---|
| Closed |
当通信对象转换为关闭状态时发生。 (继承自 CommunicationObject) |
| Closing |
当通信对象转换为结束状态时发生。 (继承自 CommunicationObject) |
| Faulted |
当通信对象转换为错误状态时发生。 (继承自 CommunicationObject) |
| Opened |
当通信对象转换为打开状态时发生。 (继承自 CommunicationObject) |
| Opening |
当通信对象转换为打开状态时发生。 (继承自 CommunicationObject) |
| UnknownMessageReceived |
收到未知消息时发生。 (继承自 ServiceHostBase) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IDisposable.Dispose() |
关闭服务主机。 (继承自 ServiceHostBase) |