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


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

Определение

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

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

Поля

Имя Значение Описание
StrongWildcard 0

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

Exact 1

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

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. Точно

  3. WeakWildcard

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

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

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

Замечание

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

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