WebServiceHost 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
编译 Windows Communication Foundation (WCF) REST 编程模型的 ServiceHost 派生类。
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) |