HostNameComparisonMode Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, wie der Hostname in URI-Vergleichen beim Verteilen einer eingehenden Nachricht an einen Dienstendpunkt verwendet werden soll.
public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode =
Public Enum HostNameComparisonMode
- Vererbung
Felder
Exact | 1 | Verwendet den Hostnamen beim Verteilen eingehender Nachrichten an diesen Endpunkt, wenn keine hohe Übereinstimmung gefunden wurde. |
StrongWildcard | 0 | Ignoriert den Hostnamen beim Verteilen eingehender Nachrichten an diesen Endpunkt. Dies ist der Standardwert. |
WeakWildcard | 2 | Wenn keine hohe oder exakte Übereinstimmung gefunden wurde, wird der Hostname beim Abgleichen ignoriert. |
Beispiele
Im Folgenden finden Sie ein Beispiel für das Festlegen des StrongWildcard-Werts in einer dienstseitigen Konfigurationsdatei.
Dies ist hier ein grundlegender Dienst und Client, die die vorangehende Konfigurationsdatei verwenden.
[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();
Hinweise
Mit dem Wert werden die URI-Übereinstimmungsregeln angegeben, die von Transportprotokollen wie HTTP, Net.Tcp und Net.Pipe beim Verteilen von eingehenden Nachrichten verwendeten werden. Konfigurieren Sie den Wert von HostNameComparisonMode für eine Standardbindung, die eines der vorangehenden Transportprotokolle verwendet, wie z. B. BasicHttpBinding, mithilfe der entsprechenden HostNameComparisonMode-Eigenschaft. Konfigurieren Sie den Wert von HostNameComparisonMode für ein Bindungselement, das eines der vorangehenden Transportprotokolle verwendet, wie z. B. HttpTransportBindingElement, mithilfe der entsprechenden HostNameComparisonMode-Eigenschaft.
Jeder Wert von HostNameComparisonMode entspricht einem bestimmten Typ der Übereinstimmungsregel. Die Abfolge von Übereinstimmungsregeln, die getestet werden, ist immer wie folgt:
Strongwildcard
Exact
WeakWildcard
Der erste Wert, StrongWildcard, ignoriert den Hostnamen beim Abgleich und hat die höchste Priorität der drei verschiedenen Abgleichsmodi. Dies ist der Standardwert für eine vom WCF-System bereitgestellte Bindung oder ein Bindungselement. Dadurch wird angegeben, dass ein Dienstendpunkt mit jedem gültigen Hostnamen erreicht werden kann. Wenn MyService beispielsweise mit http://localhost/MyService
gehostet wird, ist es weiterhin erreichbar, http://www.adatum.com/MyService
da der (vermutlich gültige) Hostname "adatum.com" ignoriert wird. Beachten Sie, dass der Port auch hier ein Platzhalter ist.
Der zweite Wert , Exact, erfordert, dass eine genaue Übereinstimmung mit dem angegebenen URI gefunden wird, einschließlich des Hostnamens, wenn keine starke Übereinstimmung gefunden wird. Dieser Modus prüft z. B. nicht die Übereinstimmung von kurzen Hostnamen mit vollqualifizierten Domänennamen. Auf diese Weise können Hostnamen als Suchkriterien in den Szenarien verwendet werden, in denen mehreren Hosts eine einzige IP-Adresse zugewiesen ist. Außerdem können verschiedene Dienste auf dem gleichem Computer mit unterschiedlichen Endpunkten gehostet werden. Beachten Sie, dass der Port auch hier ein Platzhalter ist.
Der dritte Wert WeakWildcard stimmt überein, indem der Hostname ignoriert wird, wenn keine starke oder genaue Übereinstimmung gefunden wurde. Das Verhalten ist dasselbe wie für StrongWildcard, das sich nicht in der Reihenfolge des Abgleichs befindet: Es wird ausgeführt, nachdem die starken und genauen Bindungen ausprobiert wurden.
Hinweis
Diese Werte haben keine Auswirkungen, wenn sie innerhalb der Internet Information Services (IIS)- oder Windows Process Activation Service (WAS)-Hostingumgebung verwendet werden. In diesen Fällen verwendet WCF einen beliebigen Hostnamenvergleichsmodus, der von der IIS-Website bereitgestellt wird, auf der die WCF-Dienste gehostet werden.