HostNameComparisonMode Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает способ использования имени узла в сравнениях универсального кода ресурса (URI) при диспетчеризации входящего сообщения в конечную точку службы.
public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode =
Public Enum 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 соответствует определенному типу соответствующего правила. Последовательность предпринимаемых соответствующих правил всегда имеет следующий порядок.
StrongWildcard
Exact
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.