Condividi tramite


HostNameComparisonMode Enumerazione

Definizione

Consente di specificare la modalità di utilizzo del nome host nei confronti fra URI quando si invia un messaggio in ingresso a un endpoint di servizio.

public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode = 
Public Enum HostNameComparisonMode
Ereditarietà
HostNameComparisonMode

Campi

Exact 1

Quando si inviano messaggi in ingresso a questo endpoint e non viene rilevata alcuna corrispondenza forte, il nome host viene utilizzato.

StrongWildcard 0

Quando si inviano messaggi in ingresso a questo endpoint, il nome host viene ignorato. Rappresenta il valore predefinito.

WeakWildcard 2

Se non viene rilevata alcuna corrispondenza forte oppure esatta, la verifica della corrispondenza viene eseguita ignorando il nome host.

Esempio

Di seguito è riportato un esempio di come impostare il valore StrongWildcard in un file di configurazione lato servizio.

Di seguito sono mostrati un servizio e un client di base che utilizzano il file di configurazione precedente.

[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();

Commenti

Questo valore consente di specificare le regole di corrispondenza fra URI utilizzate dai trasporti, ad esempio HTTP, Net.Tcp e Net.Pipe, per inviare i messaggi in ingresso. Per un'associazione standard che utilizza uno dei trasporti appena elencati, ad esempio per un'associazione HostNameComparisonMode che utilizza la proprietà BasicHttpBinding corrispondente, configurare il valore dell'enumerazione HostNameComparisonMode. Per un elemento di associazione che utilizza uno dei trasporti appena elencati, ad esempio per un elemento HostNameComparisonMode che utilizza la proprietà HttpTransportBindingElement corrispondente, configurare il valore dell'enumerazione HostNameComparisonMode.

Ogni valore dell'enumerazione HostNameComparisonMode corrisponde a un tipo specifico di regola di corrispondenza. La sequenza di applicazione delle regole di corrispondenza rispetta sempre l'ordine seguente:

  1. StrongWildcard

  2. Exact

  3. WeakWildcard

Il primo valore, StrongWildcard, ignora il nome host quando corrisponde e ha la precedenza più alta delle tre diverse modalità di corrispondenza. È il valore predefinito per un'associazione o un elemento di associazione fornito dal sistema WCF. Ciò indica che un endpoint di servizio può essere raggiunto tramite qualsiasi nome host valido. Ad esempio, se MyService è ospitato usando http://localhost/MyService, è ancora raggiungibile usando http://www.adatum.com/MyService perché il nome host (presumibilmente valido) "adatum.com", viene ignorato. Si noti che in questo caso anche la porta è un carattere jolly.

Il secondo valore, Exact, richiede che venga trovata una corrispondenza esatta con l'URI specificato, incluso il nome host, se non viene trovata alcuna corrispondenza complessa. In questa modalità, ad esempio, i nomi host brevi e i nomi di dominio completi non sono considerati equivalenti. Ciò consente di utilizzare i nomi host come criterio di corrispondenza nei casi in cui un unico indirizzo IP viene assegnato a più host e di ospitare nello stesso computer più servizi con endpoint distinti. Si noti che in questo caso anche la porta è un carattere jolly.

Il terzo valore WeakWildcard corrisponde ignorando il nome host se non è stata trovata alcuna corrispondenza complessa o esatta. Il comportamento è identico a quello di StrongWildcard diverso dall'ordine di corrispondenza: viene eseguito dopo il tentativo di binding sicuri ed esatti.

Nota

Questi valori non hanno alcun effetto se utilizzati in ambienti host IIS (Internet Information Services) o del servizio Attivazione processo Windows (WAS). In questi casi, WCF usa la modalità di confronto dei nomi host fornita dal sito Web IIS che ospita i servizi WCF.

Si applica a