HostNameComparisonMode 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定當把傳入訊息分派給服務端點時,在 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();
備註
此值用來指定當分派傳入訊息時,傳輸 (如 HTTP、Net.Tcp 與 Net.Pipe) 所用的 URI 符合規則。 使用前述傳輸之一 (如 HostNameComparisonMode) 以及相對應的 BasicHttpBinding 屬性,來設定標準繫結的 HostNameComparisonMode 值。 使用前述傳輸之一 (如 HostNameComparisonMode) 以及相對應的 HttpTransportBindingElement 屬性,來設定繫結項目的 HostNameComparisonMode 值。
每個 HostNameComparisonMode 的值都對應到特定型別的符合規則。 符合規則的採用順序必定如下︰
StrongWildcard
精確
WeakWildcard
第一個值 StrongWildcard 會在比對時忽略主機名稱,而且它會採用三種不同比對模式的最高優先順序。 這是 WCF 系統提供的系結或繫結項目的預設值。 這表示可以用任何有效的主機名稱,來找到服務端點。 例如,如果使用 裝載 http://localhost/MyService
MyService,仍可使用 http://www.adatum.com/MyService
連線,因為 (可能有效的) 主機名稱 「adatum.com」 會忽略。 注意,這裡的連接埠亦是萬用字元。
如果找不到強式相符專案,則第二個值 Exact 會要求找到與所指定 URI 完全相符的專案,包括主機名稱。 例如,此模式不會比較主機簡稱與完整網域名稱是否等價。 如此一來,若多個主機都指派了同一個 IP 位址,便可在案例中將主機名稱做為符合準則,就能將不同服務裝載在同一台電腦上,並擁有不同的端點。 注意,這裡的連接埠亦是萬用字元。
如果找不到強式或完全相符專案,則第三個值 WeakWildcard 會忽略主機名稱來比對。 此行為與強式Wildcard 的行為相同,而不是比對順序:它會在嘗試強式和確切的系結之後執行。
注意
若在 Internet Information Services (IIS) 或 Windows Process Activation Service (WAS) 裝載環境內使用,這些值便沒有效用。 在這些情況下,WCF 會使用裝載 WCF 服務的 IIS 網站所提供的主機名稱比較模式。