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 de URI ao expedir 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
| Nome | Valor | Description |
|---|---|---|
| StrongWildcard | 0 | Ignora o nome do host ao expedir mensagens de entrada para esse ponto de extremidade. Esse é o valor padrão. |
| Exact | 1 | Usa o nome do host ao expedir mensagens de entrada para esse ponto de extremidade, se nenhuma correspondência forte foi encontrada. |
| WeakWildcard | 2 | Se nenhuma correspondência forte ou exata foi encontrada, ignora o nome do host ao corresponder. |
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 de HostNameComparisonMode uma associação padrão usando um dos transportes anteriores, como BasicHttpBinding, usando a propriedade correspondente HostNameComparisonMode . Configure o valor de um elemento de HostNameComparisonMode associação usando um dos transportes anteriores, como HttpTransportBindingElement, usando a propriedade correspondente HostNameComparisonMode .
Cada valor corresponde a HostNameComparisonMode 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 acessado usando qualquer nome de host válido. Por exemplo, se MyService estiver hospedado usando http://localhost/MyService, ele ainda poderá ser acessado porque http://www.adatum.com/MyService o nome do host (presumivelmente válido), "adatum.com", será ignorado. Observe que a porta é um curinga aqui também.
O segundo valor, Exato, requer 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 é um curinga aqui também.
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 as associações fortes e exatas terem sido tentadas.
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 Serviço de Ativação de Processo do Windows (WAS). 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.