Compartir a través de


<serviceMetadata>

Especifica la publicación de metadatos del servicio y la información asociada.

<configuración>
   <system.serviceModel>
     <Comportamientos>
       <serviceBehaviors>
         <comportamiento>
           <serviceMetadata>

Syntax

<serviceMetadata externalMetadataLocation="String"
                 httpGetBinding="String"
                 httpGetBindingConfiguration="String"
                 httpGetEnabled="Boolean"
                 httpGetUrl="String"
                 httpsGetBinding="String"
                 httpsGetBindingConfiguration="String"
                 httpsGetEnabled="Boolean"
                 httpsGetUrl="String"
                 policyVersion="Policy12/Policy15" />

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Attributes

Atributo Description
externalMetadataLocation 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 Cadena que especifica el tipo del enlace que se usará para la recuperación de metadatos a través de HTTP GET. Esta configuración es opcional. Si no se especifica, se usarán los enlaces predeterminados.

Solo se admitirán enlaces con elementos de enlace internos que admitan IReplyChannel . Además, la MessageVersion propiedad del enlace debe ser None.
httpGetBindingConfiguration Cadena que establece el nombre del enlace especificado en el httpGetBinding atributo , que hace referencia a la información de configuración adicional de este enlace. El mismo nombre debe definirse en la <bindings> sección .
httpGetEnabled Valor booleano que especifica si se deben publicar metadatos del servicio para la recuperación mediante una solicitud HTTP/Get. 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 "?wsdl". Por ejemplo, si la dirección del servicio es http://localhost:8080/CalculatorService, la dirección de metadatos HTTP/Get es http://localhost:8080/CalculatorService?wsdl.

Si esta propiedad es falseo la dirección del servicio no se basa en HTTP o HTTPS, se omite "?wsdl".
httpGetUrl Uri que especifica la dirección en la que se publican los metadatos para su recuperación mediante una solicitud HTTP/Get. Si se especifica un URI relativo, se tratará como relativo a la dirección base del servicio.
httpsGetBinding Cadena que especifica el tipo del enlace que se usará para la recuperación de metadatos a través de HTTPS GET. Esta configuración es opcional. Si no se especifica, se usarán los enlaces predeterminados.

Solo se admitirán enlaces con elementos de enlace internos que admitan IReplyChannel . Además, la MessageVersion propiedad del enlace debe ser None.
httpsGetBindingConfiguration Cadena que establece el nombre del enlace especificado en el httpsGetBinding atributo , que hace referencia a la información de configuración adicional de este enlace. El mismo nombre debe definirse en la <bindings> sección .
httpsGetEnabled Valor booleano que especifica si se deben publicar metadatos del servicio para la recuperación mediante una solicitud HTTPS/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 "?wsdl". Por ejemplo, si la dirección del servicio es https://localhost:8080/CalculatorService, la dirección de metadatos HTTP/Get es https://localhost:8080/CalculatorService?wsdl.

Si esta propiedad es falseo la dirección del servicio no se basa en HTTP o HTTPS, se omite "?wsdl".
httpsGetUrl Uri que especifica la dirección en la que se publican los metadatos para su recuperación mediante una solicitud HTTPS/Get.
policyVersion Cadena que especifica la versión de la especificación de WS-Policy que se usa. Este atributo es de tipo PolicyVersion.

Elementos secundarios

Ninguno

Elementos primarios

Elemento Description
<comportamiento> Especifica un elemento de comportamiento.

Observaciones

Este elemento de configuración permite controlar las características de publicación de metadatos de un servicio. Para evitar la divulgación involuntaria de metadatos de servicio potencialmente confidenciales, la configuración predeterminada para los servicios de Windows Communication Foundation (WCF) deshabilita la publicación de metadatos. Este comportamiento es seguro de forma predeterminada, pero también significa 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 esté habilitado explícitamente en la configuración. Con este elemento de configuración, puede habilitar este comportamiento de publicación para el servicio.

Para obtener un ejemplo detallado de cómo configurar este comportamiento, consulte Comportamiento de publicación de metadatos.

Los atributos y httpGetBinding opcionales httpsGetBinding permiten configurar los enlaces usados para la recuperación de metadatos a través de HTTP GET (o HTTPS GET). Si no se especifican, los enlaces predeterminados (HttpTransportBindingElementen el caso de HTTP y HttpsTransportBindingElement, en el caso de HTTPS) se usan para la recuperación de metadatos según corresponda. Tenga en cuenta que no puede usar estos atributos con los enlaces WCF integrados. Solo se admitirán enlaces con elementos de enlace internos que admitan IReplyChannel . Además, la MessageVersion propiedad del enlace debe ser 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é hospedando el servicio. (Para obtener más información, vea Trabajar con certificados). En segundo lugar, agregue este elemento a la configuración del servicio y establezca el httpsGetEnabled atributo en true. Finalmente, establezca el atributo httpsGetUrl en la dirección URL del punto de conexión 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>

Example

En el ejemplo siguiente se configura un servicio para exponer metadatos mediante el <elemento serviceMetadata> . También configura un punto de conexión para exponer el IMetadataExchange contrato como una implementación de un protocolo WS-MetadataExchange (MEX). En el mexHttpBindingejemplo se usa , que es un enlace estándar de conveniencia equivalente al wsHttpBinding con el modo de seguridad establecido Noneen . Una dirección relativa de "mex" se usa en el punto de conexión, que cuando se resuelve en la dirección base de servicios da como resultado una dirección de punto de conexión de http://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: http://localhost/servicemodelsamples/service.svc -->
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- The mex endpoint is exposed at http://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. http://localhost/servicemodelsamples/service.svc?wsdl -->
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Consulte también