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();

注解

该值用于指定当调度传入的消息时,HTTP、Net.Tcp 和 Net.Pipe 等传输使用的 URI 匹配规则。 通过上述传输之一(如 HostNameComparisonMode),使用相应的 BasicHttpBinding 属性配置标准绑定的 HostNameComparisonMode 值。 通过上述传输之一(如 HostNameComparisonMode),使用相应的 HttpTransportBindingElement 属性配置绑定元素的 HostNameComparisonMode 值。

HostNameComparisonMode 的每个值都与匹配规则的一个特定类型相对应。 匹配规则的尝试顺序始终如下所示:

  1. StrongWildcard

  2. Exact

  3. WeakWildcard

第一个值 StrongWildcard 在匹配时忽略主机名,它采用三种不同匹配模式的最高优先级。 它是 WCF 系统提供的绑定或绑定元素的默认值。 这指示可以使用任何有效的主机名访问服务终结点。 例如,如果使用 托管 http://localhost/MyServiceMyService,则仍可使用 http://www.adatum.com/MyService 访问它,因为 () 主机名“adatum.com”可能有效。 请注意,此时端口也是通配符。

如果找不到强匹配项,则第二个值 Exact 要求使用指定的 URI(包括主机名)找到完全匹配项。 例如,此模式并不会将简短的主机名和完全限定域名视为等效。 这样一来,在为多台主机分配了同一个 IP 地址的情况下,可以将主机名用作匹配条件,并且可以在具有不同终结点的同一台计算机上承载不同的服务。 请注意,此时端口也是通配符。

如果未找到强匹配项或完全匹配项,则第三个值 WeakWildcard 通过忽略主机名进行匹配。 该行为与 StrongWildcard 的行为相同,而不是匹配顺序:它在尝试强和精确绑定后运行。

注意

这些值在 Internet 信息服务 (IIS) 或 Windows 进程激活服务 (WAS) 宿主环境中使用时无效。 在这些情况下,WCF 使用承载 WCF 服务的 IIS 网站提供的任何主机名比较模式。

适用于