Поделиться через


HostNameComparisonMode Перечисление

Определение

Указывает способ использования имени узла в сравнениях универсального кода ресурса (URI) при диспетчеризации входящего сообщения в конечную точку службы.

public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode = 
Public Enum HostNameComparisonMode
Наследование
HostNameComparisonMode

Поля

Exact 1

Использует имя узла при диспетчеризации входящих сообщений в эту конечную точку, если строгое соответствие не найдено.

StrongWildcard 0

Пропускает имя узла при диспетчеризации входящих сообщений в эту конечную точку. Это значение по умолчанию.

WeakWildcard 2

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

Примеры

Ниже приведен пример задания значения StrongWildcard в файле конфигурации на стороне службы.

Ниже представлена базовая служба и клиент, использующие указанный выше файл конфигурации.

[ServiceContract()]
public interface ISayHello
{
    [OperationContract()]
    string SayHello();
}

public class HelloService : ISayHello
{
    public string SayHello()
    {
        return "Hello, WCF!";
    }
}
// Open up a channel factory on a client application.
ChannelFactory<ISayHello> factory = new ChannelFactory<ISayHello>("BasicHttpBinding_ISayHello");

// Both of these contracts work (provided both hostnames are valid) because
// the binding configuration is set to hostNameComparisonMode="StrongWildcard".

ISayHello channel = factory.CreateChannel(new EndpointAddress("http://localhost:8000/UESamples/HelloService"));
ISayHello channel2 = factory.CreateChannel(new EndpointAddress("http://machineName/UESamples/HelloService"));

Console.WriteLine(channel.SayHello());

Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();

Комментарии

Значение используется для указания соответствующих правил универсального когда ресурса (URI), используемых транспортами, такими как HTTP, Net.Tcp и Net.Pipe, при диспетчеризации входящих сообщений. Настройте значение HostNameComparisonMode для стандартной привязки с использованием одного из указанных выше транспортов, например привязки BasicHttpBinding, и соответствующего свойства HostNameComparisonMode. Настройте значение HostNameComparisonMode для элемента привязки с использованием одного из указанных выше транспортов, например элемента HttpTransportBindingElement, и соответствующего свойства HostNameComparisonMode.

Каждое значение HostNameComparisonMode соответствует определенному типу соответствующего правила. Последовательность предпринимаемых соответствующих правил всегда имеет следующий порядок.

  1. StrongWildcard

  2. Exact

  3. WeakWildcard

Первое значение, StrongWildcard, игнорирует имя узла при сопоставлении и имеет наивысший приоритет из трех различных режимов сопоставления. Это значение по умолчанию для системной привязки или элемента привязки WCF. Это означает, что конечная точка службы может быть достигнута с использованием любого допустимого имени узла. Например, если MyService размещается с помощью http://localhost/MyService, она по-прежнему доступна с помощью http://www.adatum.com/MyService , так как имя узла (предположительно допустимое) "adatum.com" игнорируется. Обратите внимание, что в данном случае порт также является подстановочным знаком.

Второе значение, Exact, требует, чтобы точное соответствие было найдено с указанным URI, включая имя узла, если строгое совпадение не найдено. В этом режиме, например, не выполняется эквивалентность между короткими именами узла и полными доменными именами. Это позволяет использовать короткие имена узла в качестве критериев соответствия в сценариях, в которых нескольким узлам присваивается один IP-адрес, и обеспечивает размещение разных служб на одном компьютере с разными конечными точками. Обратите внимание, что в данном случае порт также является подстановочным знаком.

Третье значение, WeakWildcard, соответствует, игнорируя имя узла, если не найдено строгого или точного соответствия. Поведение так же, как и для StrongWildcard, отличное от порядка сопоставления: оно выполняется после проверки строгих и точных привязок.

Примечание

Эти значения не оказывают никакого влияния, если используются в среде размещения служб IIS или службы активации Windows (WAS). В таких случаях WCF использует любой режим сравнения имен узлов, предоставляемый веб-сайтом IIS, на котором размещаются службы WCF.

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