服务说明
服务说明示例演示服务如何在运行时检索其服务说明信息。本示例基于入门示例,和另一个定义为返回有关服务的说明信息的服务操作。返回的信息列出了服务的基址和终结点。服务使用 OperationContext、ServiceHost 和 ServiceDescription 类提供此信息。
在此示例中,客户端是一个控制台应用程序 (.exe),服务是由 Internet 信息服务 (IIS) 承载的。
提示
本主题的末尾介绍了此示例的设置过程和生成说明。
本示例有名为 IServiceDescriptionCalculator
的计算器协定修改版本。此协定定义一个名为 GetServiceDescriptionInfo
的附加服务操作,它向客户端返回多行描述服务的基址或地址和服务终结点的字符串。
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IServiceDescriptionCalculator
{
[OperationContract]
int Add(int n1, int n2);
[OperationContract]
int Subtract(int n1, int n2);
[OperationContract]
int Multiply(int n1, int n2);
[OperationContract]
int Divide(int n1, int n2);
[OperationContract]
string GetServiceDescriptionInfo();
}
GetServiceDescriptionInfo
的实现代码使用 ServiceDescription 列出服务终结点。服务终结点可以具有相关地址,因此它首先列出服务的基址。若要获取所有这些信息,代码将使用 Current 获取服务操作上下文。ServiceHost 及其 ServiceDescription 对象是从操作上下文中检索的。若要列出服务的基本终结点,代码需循环访问服务主机的 BaseAddresses 集合。若要列出服务的服务终结点,代码需循环访问服务说明终结点集合。
public string GetServiceDescriptionInfo()
{
string info = "";
OperationContext operationContext = OperationContext.Current;
ServiceHost host = (ServiceHost)operationContext.Host;
ServiceDescription desc = host.Description;
// Enumerate the base addresses in the service host.
info += "Base addresses:\n";
foreach (Uri uri in host.BaseAddresses)
{
info += " " + uri + "\n";
}
// Enumerate the service endpoints in the service description.
info += "Service endpoints:\n";
foreach (ServiceEndpoint endpoint in desc.Endpoints)
{
info += " Address: " + endpoint.Address + "\n";
info += " Binding: " + endpoint.Binding.Name + "\n";
info += " Contract: " + endpoint.Contract.Name + "\n";
}
return info;
}
运行示例时,将显示计算器操作,接着显示 GetServiceDescriptionInfo
操作返回的服务信息。在客户端窗口中按 Enter 可以关闭客户端。
Add(15,3) = 18
Subtract(145,76) = 69
Multiply(9,81) = 729
Divide(22,7) = 3
GetServiceDescriptionInfo
Base addresses:
http://<machine-name>/ServiceModelSamples/service.svc
https://<machine-name>/ServiceModelSamples/service.svc
Service endpoints:
Address: http://<machine-name>/ServiceModelSamples/service.svc
Binding: WSHttpBinding
Contract: IServiceDescriptionCalculator
Address: http://<machine-name>/ServiceModelSamples/service.svc/mex
Binding: MetadataExchangeHttpBinding
Contract: IMetadataExchange
Press <ENTER> to terminate client.
设置、生成和运行示例
若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。
若要用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.