HostNameComparisonMode Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica cómo debería usarse el nombre de host en comparaciones de URI al enviar un mensaje entrante a un extremo del servicio.
public enum class HostNameComparisonMode
public enum HostNameComparisonMode
type HostNameComparisonMode =
Public Enum HostNameComparisonMode
- Herencia
Campos
Exact | 1 | Utiliza el nombre del host al enviar los mensajes entrantes a este extremo, si no se encontrara una coincidencia con un alto porcentaje. |
StrongWildcard | 0 | Omite el nombre del host al enviar los mensajes entrantes a este punto de conexión. Este es el valor predeterminado. |
WeakWildcard | 2 | Si no se encontrara ninguna coincidencia exacta o con un alto porcentaje, se omitirá el nombre del host cuando coincida. |
Ejemplos
A continuación se muestra un ejemplo de cómo establecer el valor strongWildcard en un archivo de configuración del lado del servicio.
A continuación, se muestra un servicio básico y un cliente que utilizan el archivo de configuración 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();
Comentarios
El valor se utiliza para especificar las reglas coincidentes de URI utilizadas por los transportes como HTTP, Net.Tcp y Net.Pipe al enviar mensajes entrantes. Configure el valor de HostNameComparisonMode para un enlace estándar utilizando uno de los transportes anteriores, como BasicHttpBinding, con la propiedad HostNameComparisonMode correspondiente. Configure el valor de HostNameComparisonMode para un elemento de enlace con uno de los transportes anteriores, como HttpTransportBindingElement, mediante la propiedad HostNameComparisonMode correspondiente.
Cada valor de HostNameComparisonMode corresponde a un tipo específico de regla coincidente. La secuencia de reglas coincidentes intentada siempre se ordena de la siguiente manera:
StrongWildcard
Exact
WeakWildcard
El primer valor, StrongWildcard, omite el nombre de host cuando coincide y tiene la prioridad más alta de los tres modos de coincidencia diferentes. Es el valor predeterminado de un elemento de enlace o enlace proporcionado por el sistema WCF. Esto indica que se puede alcanzar un punto de conexión de servicio con cualquier nombre de host válido. Por ejemplo, si MyService se hospeda mediante http://localhost/MyService
, sigue siendo accesible mediante http://www.adatum.com/MyService
porque se omite el nombre de host (presumiblemente válido), "adatum.com". Observe que el puerto es también un carácter comodín aquí.
El segundo valor, Exact, requiere que se encuentre una coincidencia exacta con el URI especificado, incluido el nombre de host, si no se encuentra ninguna coincidencia segura. Por ejemplo, este modo no realiza la equivalencia entre los nombres de host cortos y los nombres de dominio completos. Esto permite utilizar los nombres de host como criterios de coincidencia en los escenarios donde hay varios hosts asignados a una dirección IP única y permite hospedar servicios diferentes en el mismo equipo con puntos de conexión distintos. Observe que el puerto es también un carácter comodín aquí.
El tercer valor, WeakWildcard, coincide ignorando el nombre de host si no se encontró ninguna coincidencia segura o exacta. El comportamiento es el mismo que para StrongWildcard distinto del orden de coincidencia: se ejecuta después de que se hayan probado los enlaces seguros y exactos.
Nota
Estos valores no tienen ningún efecto cuando se usan dentro de los servicios de Internet Information Server (IIS) o el entorno de hospedaje de Servicio de activación de procesos de Windows (WAS). En esos casos, WCF usa cualquier modo de comparación de nombre de host proporcionado por el sitio web de IIS que hospeda los servicios WCF.