EndpointAddress Класс

Определение

Предоставляет уникальный сетевой адрес, используемый клиентом для взаимодействия с конечной точкой службы.

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 интерфейс и поэтому не сериализуется. Чтобы конечная точка представлялась в качестве части контракта службы, она должна быть сериализуемой и совместимой с протоколом адресации веб-служб (WS-Addressing). Сериализуемые конечные точки, совместимые с протоколом WS-Addressing версии 1.0 и версии, вышедшей в августе 2004 г., предоставляются классами EndpointAddress10 и EndpointAddressAugust2004, соответственно.

Конструкторы

EndpointAddress(String)

Инициализирует новый экземпляр класса EndpointAddress с указанной строкой универсального кода ресурса (URI).

EndpointAddress(Uri, AddressHeader[])

Инициализирует новый экземпляр класса EndpointAddress с указанными универсальным кодом ресурса (URI) и заголовками.

EndpointAddress(Uri, EndpointIdentity, AddressHeader[])

Инициализирует новый экземпляр класса EndpointAddress с указанными универсальным кодом ресурса (URI), удостоверением и заголовками.

EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection)

Инициализирует новый экземпляр класса EndpointAddress с указанными универсальным кодом ресурса (URI), удостоверением и коллекцией заголовков.

EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection, XmlDictionaryReader, XmlDictionaryReader)

Инициализирует новый экземпляр класса EndpointAddress с указанными универсальным кодом ресурса (URI), удостоверением, коллекцией заголовков и средствами чтения метаданных и расширений.

Свойства

AnonymousUri

Возвращает не зависящее от версии представление анонимного универсального кода ресурса (URI).

Headers

Возвращает коллекцию заголовков адресов для конечных точек, которые может создать построитель.

Identity

Возвращает удостоверение конечной точки, используемое для проверки ее подлинности.

IsAnonymous

Возвращает значение, указывающее, является ли конечная точка анонимной.

IsNone

Возвращает значение, указывающее, имеет ли универсальный код ресурса (URI) конечной точки значение NoneUri.

NoneUri

Возвращает не зависящий от версии универсальный код ресурса (URI), используемый для адреса конечной точки, по которому сообщение не должно отправляться.

Uri

Возвращает универсальный код ресурса (URI) для конечной точки.

Методы

ApplyTo(Message)

Присваивает универсальный код ресурса (URI) и свойства адреса конечной точки значениям заголовков указанного сообщения.

Equals(Object)

Возвращает значение, указывающее, эквивалентен ли указанный объект текущему адресу конечной точки.

GetHashCode()

Предоставляет уникальный хэш-код для текущего адреса конечной точки.

GetReaderAtExtensions()

Возвращает средство чтения словаря XML, обеспечивающее доступ к расширениям.

GetReaderAtMetadata()

Возвращает средство чтения словаря XML, обеспечивающее доступ к метаданным конечной точки.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ReadFrom(AddressingVersion, XmlDictionaryReader)

Осуществляет чтение адреса конечной точки для заданной версии адреса из указанного средства чтения словаря XML.

ReadFrom(AddressingVersion, XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString)

Осуществляет чтение адреса конечной точки для заданной версии адреса с указанным полным именем из указанного средства чтения словаря XML.

ReadFrom(AddressingVersion, XmlReader)

Осуществляет чтение адреса конечной точки для заданной версии адреса из указанного средства чтения XML.

ReadFrom(AddressingVersion, XmlReader, String, String)

Осуществляет чтение адреса конечной точки для заданной версии адреса с указанным полным именем из указанного средства чтения XML.

ReadFrom(XmlDictionaryReader)

Осуществляет чтение адреса конечной точки из указанного средства чтения словаря XML.

ReadFrom(XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString)

Осуществляет чтение адреса конечной точки с заданным полным именем из указанного средства чтения словаря XML.

ToString()

Возвращает каноническое представление строки универсального кода ресурса (URI), содержащегося в адресе конечной точки.

WriteContentsTo(AddressingVersion, XmlDictionaryWriter)

Сохраняет все дочерние узлы определенного узла в указанном модуле записи словаря XML.

WriteContentsTo(AddressingVersion, XmlWriter)

Сохраняет все дочерние узлы определенного узла в указанном средстве записи XML.

WriteTo(AddressingVersion, XmlDictionaryWriter)

Сохраняет текущий адрес конечной точки заданной версии в указанном модуле записи словаря XML.

WriteTo(AddressingVersion, XmlDictionaryWriter, XmlDictionaryString, XmlDictionaryString)

Сохраняет текущий адрес конечной точки заданной версии в средстве записи словаря XML с указанными пространством имен и локальным именем.

WriteTo(AddressingVersion, XmlWriter)

Сохраняет текущий адрес конечной точки заданной версии в указанном модуле записи XML.

WriteTo(AddressingVersion, XmlWriter, String, String)

Сохраняет текущий адрес конечной точки заданной версии в средстве записи XML с указанными пространством имен и локальным именем.

Операторы

Equality(EndpointAddress, EndpointAddress)

Возвращает значение, указывающее, являются ли заданные адреса конечных точек неравнозначными.

Inequality(EndpointAddress, EndpointAddress)

Возвращает значение, указывающее, являются ли заданные адреса конечных точек неравнозначными.

Применяется к