HostNameComparisonMode Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica como o nome do host deve ser usado em comparações URI ao distribuir uma mensagem de entrada para um ponto de extremidade de serviço.
public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode =
Public Enum HostNameComparisonMode
- Herança
Campos
Exact | 1 | Usa o nome do host ao distribuir as mensagens de entrada para esse ponto de extremidade, se nenhuma correspondência forte for encontrada. |
StrongWildcard | 0 | Ignora o nome do host ao distribuir as mensagens de entrada para esse ponto de extremidade. Este é o valor padrão. |
WeakWildcard | 2 | Se nenhuma correspondência exata ou forte for encontrada, ignora o nome do host ao fazer a correspondência. |
Exemplos
Veja a seguir um exemplo de como definir o valor StrongWildcard em um arquivo de configuração do lado do serviço.
Aqui está um serviço básico e um cliente que usam o arquivo de configuração anterior.
[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();
Comentários
O valor é usado para especificar as regras de correspondência de URI usadas por transportes como HTTP, Net.Tcp e Net.Pipe ao expedir mensagens de entrada. Configure o valor do HostNameComparisonMode para uma associação padrão usando um dos transportes anteriores, como BasicHttpBinding, usando a propriedade correspondente HostNameComparisonMode . Configure o valor do HostNameComparisonMode para um elemento de associação usando um dos transportes anteriores, como HttpTransportBindingElement, usando a propriedade correspondente HostNameComparisonMode .
Cada valor do HostNameComparisonMode corresponde a um tipo específico de regra de correspondência. A sequência de regras correspondentes tentada é sempre ordenada da seguinte maneira:
Strongwildcard
Exato
WeakWildcard
O primeiro valor, StrongWildcard, ignora o nome do host ao corresponder e ele tem a precedência mais alta dos três modos de correspondência diferentes. É o valor padrão para um elemento de associação ou associação fornecido pelo sistema WCF. Isso indica que um ponto de extremidade de serviço pode ser alcançado usando qualquer nome de host válido. Por exemplo, se MyService estiver hospedado usando http://localhost/MyService
, ele ainda poderá ser acessado usando http://www.adatum.com/MyService
porque o nome do host (presumivelmente válido), "adatum.com", será ignorado. Observe que a porta também é um curinga aqui.
O segundo valor, Exato, exige que uma correspondência exata seja encontrada com o URI especificado, incluindo o nome do host, se nenhuma correspondência forte for encontrada. Esse modo, por exemplo, não executa equivalência entre nomes de host curtos e nomes de domínio totalmente qualificados. Isso permite que os nomes de host sejam usados como critérios de correspondência nos cenários em que vários hosts recebem um único endereço IP e permite que diferentes serviços sejam hospedados no mesmo computador com pontos de extremidade distintos. Observe que a porta também é um curinga aqui.
O terceiro valor, WeakWildcard, corresponde ignorando o nome do host se nenhuma correspondência forte ou exata foi encontrada. O comportamento é o mesmo que para StrongWildcard diferente da ordem de correspondência: ele é executado após a tentativa das associações fortes e exatas.
Observação
Esses valores não têm efeito quando usados dentro do ambiente de hospedagem dos Serviços de Informações da Internet (IIS) ou do WAS (Serviço de Ativação de Processo do Windows). Nesses casos, o WCF usa qualquer modo de comparação de nome de host fornecido pelo Site do IIS que hospeda os serviços do WCF.