<serviceMetadata>
Especifica la publicación de metadatos e información asociada del servicio.
<<system.serviceModel>>
<comportamientos>
<serviceBehaviors>
Elemento <behavior> de <serviceBehaviors>
<serviceMetadata>
<serviceMetadata
externalMetadataLocation="String"
httpGetBinding=”String”
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding=”String”
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15"/>
Atributos y elementos
Atributos
Atributo | Descripción |
---|---|
externalMetadataLocation |
Un URI que contiene la ubicación de un archivo WSDL que se devuelve al usuario en respuesta a las solicitudes WSDL y MEX en lugar del WSDL generado automáticamente. Cuando no se establece este atributo, se devuelve el WSDL predeterminado. El valor predeterminado es una cadena vacía. |
httpGetBinding |
Valor de cadena que permite utilizar el enlace en escenarios de HTTP GET para que sea especificado por su nombre. |
httpGetEnabled |
Un valor boolenao que especifica si publicar los metadatos del servicio para la recuperación utilizando un HTTP/Obtener solicitud. El valor predeterminado es false. Si no se especifica el atributo httpGetUrl, la dirección en la que se publican los metadatos es la dirección de servicio más un "? wsdl." Por ejemplo, si la dirección de servicio es "https://localhost:8080/CalculatorService", el HTTP/Obtener la dirección de los metadatos es "https://localhost:8080/CalculatorService?wsdl." Si esta propiedad es false o la dirección del servicio no se basa en HTTP o HTTPS, “?wsdl” se omite. |
httpGetUrl |
Un URI que especifica la dirección en la que se publican los metadatos para la recuperación mediante una solicitud HTTP/Get. |
httpsGetBinding |
Valor de cadena que permite utilizar el enlace en escenarios de HTTPS GET para que sea especificado por su nombre. |
httpsGetEnabled |
Un valor boolenao que especifica si se van a publicar los metadatos del servicio para la recuperación mediante una solicitud HTTP/Get. El valor predeterminado es false. Si no se especifica el atributo httpsGetUrl, la dirección en la que se publican los metadatos es la dirección de servicio más un "? wsdl." Por ejemplo, si la dirección de servicio es "https://localhost:8080/CalculatorService", el HTTP/Obtener la dirección de los metadatos es "https://localhost:8080/CalculatorService?wsdl." Si esta propiedad es false o la dirección del servicio no se basa en HTTP o HTTPS, “?wsdl” se omite. |
httpsGetUrl |
Un URI que especifica la dirección en la que se publican los metadatos para la recuperación mediante una solicitud HTTPS/Get. |
policyVersion |
Una cadena que especifica la versión de la especificación WS-Policy que se va a usar. Este atributo es del tipo PolicyVersion. |
Elementos secundarios
Ninguno
Elementos primarios
Elemento | Descripción |
---|---|
Especifica el comportamiento de un elemento. |
Comentarios
Este elemento de configuración permite controlar los metadatos que publican características de un servicio. Para evitar la divulgación involuntaria de metadatos de servicio con información confidencial potencial, la configuración predeterminada para los servicios Windows Communication Foundation (WCF) deshabilita la publicación de metadatos. Este comportamiento es seguro de forma predeterminada, pero también quiere decir que no puede usar una herramienta de importación de metadatos (como Svcutil.exe) para generar el código de cliente necesario para llamar al servicio a menos que el comportamiento de publicación de metadatos del servicio se habilite de manera explícita en la configuración. Con este elemento de configuración, puede habilitar este comportamiento de publicación para su servicio.
Para obtener un ejemplo detallado del código para configurar este comportamiento, vea Metadata Publishing Behavior.
Los atributos httpsGetBinding y httpGetBinding opcionales le permiten configurar los enlaces utilizados para la recuperación de metadatos a través de HTTP GET (o HTTPS GET). Si no se especifican, los enlaces predeterminados (HttpTransportBindingElement, en el caso de HTTP y HttpsTransportBindingElement, en el caso de HTTPS) se utilizan según corresponda para la recuperación de metadatos. Observe que no puede utilizar estos atributos con los enlaces WCF integrados. Sólo se admitirán los enlaces con elementos de enlace internos que admiten System.ServiceModel.Channels.IReplyChannel. Además, la propiedad System.ServiceModel.Channels.MessageVersion del enlace debe ser System.ServiceModel.Channels.MessageVersion.None.
Para reducir la exposición de un servicio a los usuarios malintencionados, es posible proteger la transferencia mediante el mecanismo SSL sobre HTTP (HTTPS). Para realizar esto, debe enlazar primero un certificado X.509 adecuado a un puerto concreto en el equipo que esté alojando el servicio. (Para obtener más información, consulte Working with Certificates.) Segundo, agregue este elemento a la configuración de servicio y establezca el atributo httpsGetEnabled en true. Finalmente, establezca el atributo httpsGetUrl en la dirección URL del extremo de metadatos del servicio, tal y como se muestra en el ejemplo siguiente.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Ejemplo
El ejemplo siguiente configura un servicio para exponer los metadatos usando el elemento <serviceMetadata>. También configura un extremo para exponer el contrato IMetadataExchange como una implementación de un protocolo WS-MetadataExchange (MEX). El ejemplo usa mexHttpBinding, que es un enlace estándar de conveniencia equivalente a wsHttpBinding con el modo de seguridad establecido en None. Se utiliza una dirección relativa de "mex" en el extremo que, cuando se resuelve con los resultados de la dirección base de los servicios resulta en una dirección de extremo de https://localhost/servicemodelsamples/service.svc/mex.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by the host: https://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at https://localhost/servicemodelsamples/service.svc/mex
To expose the IMetadataExchange contract, you
must enable the serviceMetadata behavior as demonstrated below -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<!-- The serviceMetadata behavior publishes metadata through
the IMetadataExchange contract. When this behavior is
present, you can expose this contract through an endpoint
as shown above. Setting httpGetEnabled to true publishes
the service's WSDL at the <baseaddress>?wsdl
eg. https://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Consulte también
Referencia
ServiceMetadataPublishingElement
ServiceMetadataBehavior