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

注釈

この値を使用して、受信メッセージをディスパッチするときに、HTTP、Net.Tcp、Net.Pipe などのトランスポートで使用される URI 照合ルールを指定します。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. WeakWildcardWeakWildcard

最初の値では、StrongWildcard、一致するときに、ホスト名を無視する、3 つの異なる一致のモードの最高の優先順位をかかります。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.

2 番目の値、Exact、厳密な一致が見つからない場合、ホスト名を含む、指定した 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 アドレスが割り当てられ、別個のエンドポイントを持つ 1 台のマシン上で異なるサービスをホストできるシナリオの中で、ホスト名を照合条件として使用できます。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.

強力なまたは正確な一致が見つからなかった場合は、ホスト名を無視することによって、WeakWildcard、3 番目の値に一致します。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 Web サイトでを提供は、WCF サービスをホストを使用します。In those cases, WCF uses whatever hostname comparison mode is provided by the IIS Web Site hosting the WCF services.

適用対象