HostNameComparisonMode HostNameComparisonMode HostNameComparisonMode HostNameComparisonMode Enum

Определение

Указывает способ использования имени узла в сравнениях универсального кода ресурса (URI) при диспетчеризации входящего сообщения в конечную точку службы.Specifies how the host name should be used in URI comparisons when dispatching an incoming message to a service endpoint.

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

Поля

Exact Exact Exact Exact 1

Использует имя узла при диспетчеризации входящих сообщений в эту конечную точку, если строгое соответствие не найдено.Uses the hostname when dispatching incoming messages to this endpoint, if no strong match was found.

StrongWildcard StrongWildcard StrongWildcard StrongWildcard 0

Пропускает имя узла при диспетчеризации входящих сообщений в эту конечную точку.Ignores the hostname when dispatching incoming messages to this endpoint. Это значение по умолчанию.This is the default value.

WeakWildcard WeakWildcard WeakWildcard WeakWildcard 2

Если строгое или точное соответствие не найдено, пропускает имя узла при поиске соответствий.If no strong or exact match was found, ignores the hostname when matching.

Примеры

Ниже приведен пример того, как задать значение StrongWildcard в файле конфигурации на стороне службы.The following is an example of how to set StrongWildcard value in a service side configuration file.

Ниже представлена базовая служба и клиент, использующие указанный выше файл конфигурации.Here is a basic service and client that use the preceding configuration file.

[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, при диспетчеризации входящих сообщений.The value is used to specify the URI matching rules used by transports such as HTTP, Net.Tcp, and Net.Pipe when dispatching incoming messages. Настройте значение HostNameComparisonMode для стандартной привязки с использованием одного из указанных выше транспортов, например привязки BasicHttpBinding, и соответствующего свойства HostNameComparisonMode.Configure the value of the HostNameComparisonMode for a standard binding using one of the preceding transports, such as BasicHttpBinding, using the corresponding HostNameComparisonMode property. Настройте значение HostNameComparisonMode для элемента привязки с использованием одного из указанных выше транспортов, например элемента HttpTransportBindingElement, и соответствующего свойства HostNameComparisonMode.Configure the value of the HostNameComparisonMode for a binding element using one of the preceding transports, such as HttpTransportBindingElement, using the corresponding HostNameComparisonMode property.

Каждое значение HostNameComparisonMode соответствует определенному типу соответствующего правила.Each value of the HostNameComparisonMode corresponds to a specific type of matching rule. Последовательность предпринимаемых соответствующих правил всегда имеет следующий порядок.The sequence of matching rules attempted is always ordered as follows:

  1. StrongWildcardStrongWildcard

  2. ExactExact

  3. веаквилдкардWeakWildcard

Первое значение, StrongWildcard, игнорирует имя узла при сопоставлении и принимает наивысший приоритет трех различных режимов сопоставления.The first value, StrongWildcard, ignores the host name when matching and it takes the highest precedence of the three different matching modes. Это значение по умолчанию для элемента привязки или привязки WCF, предоставляемого системой.It is the default value for a WCF system-provided binding or binding element. Это означает, что конечная точка службы может быть достигнута с использованием любого допустимого имени узла.This indicates that a service endpoint can be reached using any valid host name. Например, если MyService размещается с http://localhost/MyServiceпомощью, он по-прежнему достижим http://www.adatum.com/MyService с помощью, так как имя узла (предположительно допустимо), "adatum.com", игнорируется.For example, if MyService is hosted using http://localhost/MyService, it is still reachable using http://www.adatum.com/MyService because the (presumably valid) host name, "adatum.com", is ignored. Обратите внимание, что в данном случае порт также является подстановочным знаком.Note that the port is a wildcard here as well.

Второе значение, точное, требует, чтобы было найдено точное совпадение с указанным URI, включая имя узла, если строгое соответствие не найдено.The second value, Exact, requires that an exact match is found with the URI specified, including the hostname, if no strong match is found. В этом режиме, например, не выполняется эквивалентность между короткими именами узла и полными доменными именами.This mode, for example, does not perform equivalence between short hostnames and fully-qualified domain names. Это позволяет использовать короткие имена узла в качестве критериев соответствия в сценариях, в которых нескольким узлам присваивается один IP-адрес, и обеспечивает размещение разных служб на одном компьютере с разными конечными точками.This allows hostnames to be used as match criteria in the scenarios where multiple hosts are assigned a single IP address and it enables different services to be hosted on the same machine with distinct endpoints. Обратите внимание, что в данном случае порт также является подстановочным знаком.Note that the port is a wildcard here as well.

Третье значение, Веаквилдкард, соответствует, игнорируя имя узла, если не найдено строгое или точное соответствие.The third value, WeakWildcard, matches by ignoring the hostname if no strong or exact match was found. Поведение аналогично поведению для StrongWildcard, отличного от порядка сопоставления: он выполняется после попыток выполнения строгой и точной привязки.The behavior is the same as for StrongWildcard other than the order of matching: it runs after the strong and exact bindings have been tried.

Примечание

Эти значения не оказывают никакого влияния, если используются в среде размещения служб IIS или службы активации Windows (WAS).These values have no effect when used inside of the Internet Information Services (IIS) or Windows Process Activation Service (WAS) hosting environment. В таких случаях WCF использует любой режим сравнения имен узлов, предоставляемый веб-сайтом IIS, на котором размещены службы WCF.In those cases, WCF uses whatever hostname comparison mode is provided by the IIS Web Site hosting the WCF services.

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