HostNameComparisonMode Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, как имя узла должно использоваться в сравнениях URI при отправке входящего сообщения в конечную точку службы.
public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode =
Public Enum 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 соответствует определенному типу правила сопоставления. Последовательность попыток сопоставления правил всегда упорядочивается следующим образом:
StrongWildcard
Точно
WeakWildcard
Первое значение StrongWildcard игнорирует имя узла при сопоставлении, и оно принимает наивысший приоритет трех различных режимов сопоставления. Это значение по умолчанию для предоставленной системой привязки или элемента привязки WCF. Это означает, что конечная точка службы может быть достигнута с помощью любого допустимого имени узла. Например, если myService размещена с помощью http://localhost/MyService, оно по-прежнему доступно, http://www.adatum.com/MyService так как имя узла (предположительно допустимо) "adatum.com", игнорируется. Обратите внимание, что порт также является подстановочным знаком.
Второе значение, точное, требует, чтобы точное совпадение найдено с указанным URI, включая имя узла, если строгое совпадение не найдено. Этот режим, например, не выполняет эквивалентность между короткими именами узлов и полными доменными именами. Это позволяет использовать имена узлов в качестве критериев соответствия в сценариях, где несколько узлов назначены одному IP-адресу, и позволяет размещать разные службы на одном компьютере с различными конечными точками. Обратите внимание, что порт также является подстановочным знаком.
Третье значение, WeakWildcard, сопоставляется, игнорируя имя узла, если не найдено строгого или точного совпадения. Поведение совпадает с поведением для StrongWildcard, отличного от порядка сопоставления: оно выполняется после проверки сильных и точных привязок.
Замечание
Эти значения не влияют при использовании внутри среды размещения служб IIS или службы активации процессов Windows (WAS). В этих случаях WCF использует любой режим сравнения имен узлов, предоставляемый веб-сайтом IIS, на котором размещаются службы WCF.