EndpointAddress 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供客户端用来与服务终结点进行通信的唯一网络地址。
public ref class EndpointAddress
public class EndpointAddress
type EndpointAddress = class
Public Class EndpointAddress
- 继承
-
EndpointAddress
示例
using System;
using System.Configuration;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.Text;
namespace Microsoft.WCF.Documentation
{
class HostApplication
{
static void Main()
{
HostApplication app = new HostApplication();
app.Run();
}
private void Run()
{
// Get base address from app settings in configuration
Uri baseAddress = new Uri(ConfigurationManager.AppSettings["baseAddress"]);
//Create new address headers for special services and add them to an array
AddressHeader addressHeader1 = AddressHeader.CreateAddressHeader(
"specialservice1", "http://localhost:8000/service", 1);
AddressHeader addressHeader2 = AddressHeader.CreateAddressHeader(
"specialservice2", "http://localhost:8000/service", 2);
// Enumerate address headers and their properties from the array.
AddressHeader[] addressHeaders = new AddressHeader[2] { addressHeader1, addressHeader2 };
foreach (AddressHeader addressHeader in addressHeaders)
{
Console.WriteLine("AddressHeader - namespace:\t\t{0}", addressHeader.Namespace);
Console.WriteLine(" - name:\t\t\t{0}", addressHeader.Name);
Console.WriteLine(" - value:\t\t\t{0}", addressHeader.GetValue<int>());
Console.WriteLine(" - type:\t\t\t{0}", addressHeader.GetType());
Console.WriteLine(" - hashcode:\t\t{0}", addressHeader.GetHashCode());
Console.WriteLine(" - equals addressHeader1:\t{0}", addressHeader.Equals(addressHeader1));
// Console.WriteLine(" - Is SOAP1.1 supported:\t{0}", addressHeader.ToMessageHeader().IsMessageVersionSupported(MessageVersion.WSAddressingSoap10));
Console.WriteLine();
}
Console.WriteLine();
//Add the array of address headers to an endpoint address
EndpointAddress endpointAddress = new EndpointAddress(
new Uri("http://localhost:8003/servicemodelsamples/service"), addressHeaders);
//Create a "special" service endpoint that uses the endpointAddress.
string WSHttpBindingName = "Binding1";
ServiceEndpoint specialServiceEndpoint = new ServiceEndpoint(
ContractDescription.GetContract(typeof(CalculatorService)), new WSHttpBinding(WSHttpBindingName), endpointAddress
);
// Create a ServiceHost for the CalculatorService type that uses the base address.
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
//Add the specialServiceEndpoint to the serviceHost.
serviceHost.Description.Endpoints.Add(specialServiceEndpoint);
// Enumerate the service endpoints and some of their properties from the serviceHost.
Console.WriteLine("Service endpoints:");
ServiceDescription desc = serviceHost.Description;
foreach (ServiceEndpoint endpoint in desc.Endpoints)
{
Console.WriteLine("Endpoint - address: {0}", endpoint.Address);
Console.WriteLine(" - binding name:\t\t{0}", endpoint.Binding.Name);
// Console.WriteLine(" - binding name:\t\t{0}", endpoint.);
Console.WriteLine(" - contract name:\t\t{0}", endpoint.Contract.Name);
Console.WriteLine(" - contains addressHeader1:\t{0}", endpoint.Address.Headers.Contains(addressHeader1));
Console.WriteLine(" - count of address headers:\t{0}", endpoint.Address.Headers.Count);
Console.WriteLine();
}
Console.WriteLine();
// Open the ServiceHostBase to create listeners and 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.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
}
注解
终结点地址唯一标识服务的终结点。
终结点地址属于服务终结点。服务终结点还包含终结点的绑定、协定和行为。
EndpointAddress 包含一个 URI,以及包括标识、WSDL 元素和可选标头集合在内的地址属性。 可选标头用于提供其他更多详细寻址信息来标识终结点或与终结点交互。 例如,它们可用于指示当有多个实例可用时,要使用哪个服务实例来处理从特定用户传入的消息。
您可以通过使用代码以强制方式或通过配置以声明方式指定服务的终结点地址。 在代码中定义终结点通常是不可行的,因为已部署服务的绑定和地址通常与在部署服务时所用的绑定和地址不同。 使用配置定义服务终结点更为实用。
EndpointAddress 不实现 ISerializable 接口,因此不可序列化。 若要使终结点作为服务协定的一部分进行公开,它必须是可序列化的,而且还必须与 Web 服务寻址 (WS-Addressing) 协议兼容。 与 WS-Addressing 1.0 版和 2004 年 8 月版兼容的可序列化终结点分别由 EndpointAddress10 和 EndpointAddressAugust2004 类提供。
构造函数
EndpointAddress(String) |
使用指定的 URI 字符串初始化 EndpointAddress 类的新实例。 |
EndpointAddress(Uri, AddressHeader[]) |
使用指定的 URI 和标头初始化 EndpointAddress 类的新实例。 |
EndpointAddress(Uri, EndpointIdentity, AddressHeader[]) |
使用指定的 URI、标识和标头初始化 EndpointAddress 类的新实例。 |
EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection) |
使用指定的 URI、标识和标头集合初始化 EndpointAddress 类的新实例。 |
EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection, XmlDictionaryReader, XmlDictionaryReader) |
使用指定的 URI、标识、标头集合、元数据和扩展读取器初始化 EndpointAddress 类的新实例。 |
属性
AnonymousUri |
获取匿名 URI 的与版本无关的表示形式。 |
Headers |
获取生成器可以创建的终结点的地址标头的集合。 |
Identity |
获取用于验证终结点的标识。 |
IsAnonymous |
获取一个值,该值指示终结点是否为匿名。 |
IsNone |
获取一个值,该值指示终结点 URI 是否为 NoneUri。 |
NoneUri |
获取一个与版本无关的 URI,用作不得向其发送消息的终结点地址。 |
Uri |
获取终结点的 URI。 |
方法
运算符
Equality(EndpointAddress, EndpointAddress) |
返回一个值,该值指示指定的终结点地址是否不相等。 |
Inequality(EndpointAddress, EndpointAddress) |
返回一个值,该值指示指定的终结点地址是否不相等。 |