HostNameComparisonMode Enumeração

Definição

Especifica como o nome do host deve ser usado nas comparações de URI ao despachar uma mensagem recebida para um endpoint de serviço.

public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode = 
Public Enum HostNameComparisonMode
Herança
HostNameComparisonMode

Campos

Name Valor Description
StrongWildcard 0

Ignora o nome do host ao enviar mensagens recebidas para este endpoint. Este é o valor padrão.

Exact 1

Usa o nome de host ao enviar mensagens recebidas para este endpoint, caso não tenha sido encontrada correspondência forte.

WeakWildcard 2

Se não for encontrada correspondência forte ou exata, ignora o nome do anfitrião ao fazer correspondência.

Exemplos

Segue-se um exemplo de como definir o valor StrongWildcard num ficheiro de configuração do lado do serviço.

Aqui está um serviço básico e um cliente que utilizam o ficheiro 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();

Observações

O valor é usado para especificar as regras de correspondência de URI usadas por transportes como HTTP, Net.TCP e Net.Pipe ao despachar mensagens recebidas. Configure o valor de para HostNameComparisonMode uma ligação padrão usando um dos transportes anteriores, como BasicHttpBinding, usando a propriedade correspondente HostNameComparisonMode . Configure o valor de para HostNameComparisonMode um elemento de ligação usando um dos transportes anteriores, como HttpTransportBindingElement, usando a propriedade correspondente HostNameComparisonMode .

Cada valor de corresponde HostNameComparisonMode a um tipo específico de regra de correspondência. A sequência de regras de correspondência tentada é sempre ordenada da seguinte forma:

  1. StrongWildcard

  2. Exato

  3. WeakWildcard

O primeiro valor, StrongWildcard, ignora o nome do host ao fazer correspondência e tem a maior precedência entre os três modos de correspondência diferentes. É o valor padrão para um elemento de ligação ou binding fornecido pelo sistema WCF. Isto indica que um endpoint de serviço pode ser alcançado usando qualquer nome de host válido. Por exemplo, se o MyService for alojado usando http://localhost/MyService, ainda é acessível porque http://www.adatum.com/MyService o nome de host (presumivelmente válido), "adatum.com", é ignorado. Note que o port também é uma incógnita aqui.

O segundo valor, Exato, exige que seja encontrada uma correspondência exata com o URI especificado, incluindo o nome do host, caso não seja encontrada correspondência forte. Este modo, por exemplo, não realiza a equivalência entre nomes de host curtos e nomes de domínio totalmente qualificados. Isto permite que nomes de host sejam usados como critério de correspondência em cenários em que múltiplos hosts são atribuídos a um único endereço IP e permite que diferentes serviços sejam alojados na mesma máquina com endpoints distintos. Note que o port também é uma incógnita aqui.

O terceiro valor, WeakWildcard, corresponde ignorando o nome do anfitrião se não for encontrada uma correspondência forte ou exata. O comportamento é o mesmo do StrongWildcard, exceto pela ordem de correspondência: ocorre depois de as ligações fortes e exatas terem sido tentadas.

Note

Estes valores não têm efeito quando usados dentro do ambiente de alojamento do Serviços de Informação Internet (IIS) ou do Windows Process Activation Service (WAS). Nesses casos, o WCF utiliza qualquer modo de comparação de nomes de host fornecido pelo site do IIS que aloja os serviços WCF.

Aplica-se a