Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se explicará cómo configurar intercambio de WS-Metadata personalizados intercambie el enlace. Windows Communication Foundation (WCF) incluye cuatro enlaces de los metadatos definidos por sistema, pero puede publicar los metadatos utilizando cualquier enlace que desea. En este tema, se mostrará cómo publicar metadatos mediante wsHttpBinding. Este enlace le da la opción de exponer los metadatos de una manera segura. El código de este artículo está basado en Ejemplo de introducción.
El uso de un archivo de configuración
En el archivo de configuración del servicio, agregue un comportamiento del servicio que contenga la etiqueta serviceMetadata:
<behaviors> <serviceBehaviors> <behavior name="CalculatorServiceBehavior"> <serviceMetadata httpGetEnabled="True"/> </behavior> </serviceBehaviors> </behaviors>
Agregue un atributo behaviorConfiguration a la etiqueta del servicio que hace referencia a este nuevo comportamiento:
<service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">
Agregue un extremo de metadatos que especifique mex como dirección, wsHttpBinding como enlace, y IMetadataExchange como contrato:
<endpoint address="mex" binding="wsHttpBinding" contract="IMetadataExchange" />
Para comprobar que el extremo de intercambio de metadatos está funcionando correctamente, agregue una etiqueta de extremo en el archivo de configuración del cliente:
<endpoint name="MyMexEndpoint" address="https://localhost:8000/servicemodelsamples/service/mex" binding="wsHttpBinding" contract="IMetadataExchange"/>
En el método Main () del cliente, cree una nueva instancia MetadataExchangeClient, establezca su propiedad ResolveMetadataReferences en true, llame GetMetadata y, a continuación, recorra en iteración la colección de metadatos devuelta:
string mexAddress = "https://localhost:8000/servicemodelsamples/service/mex"; MetadataExchangeClient mexClient = new MetadataExchangeClient("MyMexEndpoint"); mexClient.ResolveMetadataReferences = true; MetadataSet mdSet = mexClient.GetMetadata(new EndpointAddress(mexAddress)); foreach (MetadataSection section in mdSet.MetadataSections) Console.WriteLine("Metadata section: " + section.Dialect.ToString());
Configurar por código
Cree una instancia de enlace WsHttpBinding:
WSHttpBinding binding = new WSHttpBinding();
Cree una instancia ServiceHost.
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
Agregue un extremo de servicio y agregue una instancia ServiceMetadataBehavior:
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, baseAddress); ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; serviceHost.Description.Behaviors.Add(smb);
Agregue un extremo de intercambio de metadatos, especificando WSHttpBinding creado anteriormente:
serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), binding, mexAddress);
Para comprobar que el extremo de intercambio de metadatos está funcionando correctamente, agregue una etiqueta de extremo en el archivo de configuración del cliente:
<endpoint name="MyMexEndpoint" address="https://localhost:8000/servicemodelsamples/service/mex" binding="wsHttpBinding" contract="IMetadataExchange"/>
En el método Main () del cliente, cree una nueva instancia MetadataExchangeClient, establezca la propiedad ResolveMetadataReferences en true, llame GetMetadata y, a continuación, recorra en iteración la colección de metadatos devuelta:
string mexAddress = "https://localhost:8000/servicemodelsamples/service/mex"; MetadataExchangeClient mexClient = new MetadataExchangeClient("MyMexEndpoint"); mexClient.ResolveMetadataReferences = true; MetadataSet mdSet = mexClient.GetMetadata(new EndpointAddress(mexAddress)); foreach (MetadataSection section in mdSet.MetadataSections) Console.WriteLine("Metadata section: " + section.Dialect.ToString());
Vea también
Tareas
Comportamiento de publicación de metadatos
Recuperación de metadatos
Conceptos
Metadatos
Publicación de metadatos
Publicación de extremos de metadatos