HostNameComparisonMode Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje, jak se má název hostitele použít při porovnání identifikátorů URI při odesílání příchozí zprávy do koncového bodu služby.
public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode =
Public Enum HostNameComparisonMode
- Dědičnost
Pole
| Name | Hodnota | Description |
|---|---|---|
| StrongWildcard | 0 | Ignoruje název hostitele při odesílání příchozích zpráv do tohoto koncového bodu. Toto je výchozí hodnota. |
| Exact | 1 | Používá název hostitele při odesílání příchozích zpráv do tohoto koncového bodu, pokud nebyla nalezena žádná silná shoda. |
| WeakWildcard | 2 | Pokud nebyla nalezena žádná silná nebo přesná shoda, ignoruje název hostitele při porovnávání. |
Příklady
Následuje příklad nastavení hodnoty StrongWildcard v konfiguračním souboru na straně služby.
Tady je základní služba a klient, který používá předchozí konfigurační soubor.
[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();
Poznámky
Hodnota se používá k určení pravidel porovnávání identifikátorů URI používaných přenosy, jako jsou HTTP, Net.Tcp a Net.Pipe při odesílání příchozích zpráv. Nakonfigurujte hodnotu standardní vazby HostNameComparisonMode pomocí jednoho z předchozích přenosů, například BasicHttpBindingpomocí odpovídající HostNameComparisonMode vlastnosti. Nakonfigurujte hodnotu elementu HostNameComparisonMode vazby pomocí některého z předchozích přenosů, například HttpTransportBindingElementpomocí odpovídající HostNameComparisonMode vlastnosti.
Každá hodnota HostNameComparisonMode odpovídá určitému typu odpovídajícího pravidla. Posloupnost pokusů o párování pravidel je vždy seřazena takto:
StrongWildcard
Přesný
WeakWildcard
První hodnota StrongWildcard ignoruje název hostitele při porovnávání a má nejvyšší prioritu tří různých režimů porovnávání. Jedná se o výchozí hodnotu pro systémovou vazbu nebo element vazby WCF. To znamená, že koncový bod služby je dostupný pomocí libovolného platného názvu hostitele. Pokud je například služba MyService hostovaná pomocí http://localhost/MyService, je stále dosažitelná, http://www.adatum.com/MyService protože (pravděpodobně platný) název hostitele, "adatum.com", je ignorován. Všimněte si, že port je zde také zástupný znak.
Druhá hodnota Přesná vyžaduje, aby byla nalezena přesná shoda se zadaným identifikátorem URI, včetně názvu hostitele, pokud nebyla nalezena žádná silná shoda. Tento režim například neprovádí ekvivalenci mezi krátkými názvy hostitelů a plně kvalifikovanými názvy domén. To umožňuje použití názvů hostitelů jako kritéria shody ve scénářích, kdy má více hostitelů přiřazenou jednu IP adresu a umožňuje hostování různých služeb na stejném počítači s odlišnými koncovými body. Všimněte si, že port je zde také zástupný znak.
Třetí hodnota WeakWildcard odpovídá ignorováním názvu hostitele, pokud nebyla nalezena žádná silná nebo přesná shoda. Chování je stejné jako u StrongWildcard jiné než pořadí porovnávání: spustí se po vyzkoušení silných a přesných vazeb.
Poznámka:
Tyto hodnoty nemají žádný vliv při použití v hostitelském prostředí internetové informační služby (IIS) nebo služby aktivace procesu systému Windows (WAS). V těchto případech WCF používá jakýkoli režim porovnání názvů hostitelů, který je poskytován webem SLUŽBY IIS, který je hostitelem služeb WCF.