次の方法で共有


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 は、照合時にホスト名を無視し、3 つの異なる一致モードの優先順位が最も高くなります。 これは、WCF システム提供のバインディング要素またはバインド要素の既定値です。 これは、任意の有効なホスト名を使用してサービス エンドポイントに到達できることを示します。 たとえば、MyService が を使用して http://localhost/MyServiceホストされている場合、(おそらく有効な) ホスト名 "adatum.com" は無視されるため、 を使用しても http://www.adatum.com/MyService 到達可能です。 ここでは、ポートがワイルドカードであることにも注意してください。

2 番目の値 Exact では、厳密な一致が見つからない場合は、ホスト名を含め、指定された URI と完全に一致する必要があります。 このモードでは、たとえば短いホスト名と完全に修飾されたドメイン名は一致しません。 これにより、複数のホストに単一の IP アドレスが割り当てられ、別個のエンドポイントを持つ 1 台のマシン上で異なるサービスをホストできるシナリオの中で、ホスト名を照合条件として使用できます。 ここでは、ポートがワイルドカードであることにも注意してください。

3 番目の値 WeakWildcard は、厳密または完全な一致が見つからなかった場合、ホスト名を無視して一致します。 動作は、一致の順序以外の StrongWildcard の場合と同じです。厳密で正確なバインディングが試行された後に実行されます。

注意

これらの値は、インターネット インフォメーション サービス (IIS) または Windows プロセス アクティブ化サービス (WAS) ホスト環境の中で使用された場合は無効です。 このような場合、WCF は、WCF サービスをホストしている IIS Web サイトによって提供されるホスト名比較モードを使用します。

適用対象