<serviceMetadata>
Задает публикацию метаданных службы и связанных сведений.
<Конфигурации>
<system.serviceModel>
<Поведения>
<serviceBehaviors>
<Поведение>
<serviceMetadata>
Синтаксис
<serviceMetadata externalMetadataLocation="String"
httpGetBinding="String"
httpGetBindingConfiguration="String"
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding="String"
httpsGetBindingConfiguration="String"
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15" />
Атрибуты и элементы
В следующих разделах описаны атрибуты, дочерние и родительские элементы.
Атрибуты
Атрибут | Описание |
---|---|
externalMetadataLocation | Универсальный код ресурса (URI), содержащий местоположение WSDL-файла, возвращаемый пользователю в ответ на запросы WSDL и MEX, вместо автоматически создаваемых WSDL. Если атрибут не задан, по умолчанию возвращается WSDL. Значением по умолчанию является пустая строка. |
httpGetBinding | Строковое значение, в котором указывается тип привязки, используемой для загрузки метаданных посредством HTTP GET. Это необязательный параметр. Если он не указан, то будут использоваться привязки по умолчанию. Поддерживаются только привязки с внутренними элементами привязки, поддерживающими IReplyChannel. Кроме этого, свойство MessageVersion привязки должно иметь значение None. |
httpGetBindingConfiguration | Строка, задающая имя привязки, указанной атрибутом httpGetBinding , который ссылается на дополнительные сведения конфигурации этой привязки. Такое же имя должно быть задано в разделе <bindings> . |
httpGetEnabled | Логическое значение, указывающее, следует ли опубликовывать метаданные службы для извлечения с помощью запроса HTTP-GET. Значение по умолчанию — false .Если атрибут httpGetUrl не указан, адрес, по которому публикуются метаданные, - это адрес службы плюс «?wsdl». Например, если адрес службы — http://localhost:8080/CalculatorService , адрес http/get метаданных имеет значение http://localhost:8080/CalculatorService?wsdl .Если это свойство имеет значение false или адрес службы не основан на HTTP или HTTPS, "?wsdl" игнорируется. |
httpGetUrl | URI, указывающий адрес, по которому метаданные публикуются для извлечения с использованием запроса HTTP-GET. Если указан относительный URI, то он будет обрабатываться относительно базового адреса службы. |
httpsGetBinding | Строковое значение, в котором указывается тип привязки, используемой для загрузки метаданных посредством HTTPS GET. Это необязательный параметр. Если он не указан, то будут использоваться привязки по умолчанию. Поддерживаются только привязки с внутренними элементами привязки, поддерживающими IReplyChannel. Кроме этого, свойство MessageVersion привязки должно иметь значение None. |
httpsGetBindingConfiguration | Строка, задающая имя привязки, указанной атрибутом httpsGetBinding , который ссылается на дополнительные сведения конфигурации этой привязки. Такое же имя должно быть задано в разделе <bindings> . |
httpsGetEnabled | Логическое значение, указывающее, следует ли опубликовывать метаданные службы для извлечения с помощью запроса HTTPS-GET. Значение по умолчанию — false .Если атрибут httpsGetUrl не указан, адрес, по которому публикуются метаданные, - это адрес службы плюс «?wsdl». Например, если адрес службы — https://localhost:8080/CalculatorService , адрес http/get метаданных имеет значение https://localhost:8080/CalculatorService?wsdl .Если это свойство имеет значение false или адрес службы не основан на HTTP или HTTPS, "?wsdl" игнорируется. |
httpsGetUrl | URI, указывающий адрес, по которому метаданные публикуются для извлечения с использованием запроса HTTPS-GET. |
policyVersion | Строка, указывающая версию используемой спецификации Web Services Policy. Это атрибут типа PolicyVersion. |
Дочерние элементы
Нет
Родительские элементы
Элемент | Описание |
---|---|
<Поведение> | Указывает элемент поведения. |
Комментарии
Элемент конфигурации позволяет управлять возможностями публикации метаданных службы. Чтобы предотвратить непреднамеренное раскрытие потенциально конфиденциальных метаданных службы, конфигурация по умолчанию для служб Windows Communication Foundation (WCF) отключает публикацию метаданных. Такое расширение функциональности по умолчанию защищено, но это также означает, что при этом невозможно использовать средство импорта метаданных (например, Svcutil.exe) для создания клиентского кода, необходимого для вызова службы, если поведение публикации не включено явно в конфигурации. Включить такое поведение публикации для службы можно с помощью элемента конфигурации.
Подробный пример настройки этого поведения см. в разделе Поведение публикации метаданных.
Дополнительные атрибуты httpGetBinding
и httpsGetBinding
позволяют настроить привязки, используемые для извлечения метаданных посредством HTTP-GET (или HTTPS-GET). Если они не заданы, для извлечения метаданных применяются привязки по умолчанию (HttpTransportBindingElement
для HTTP и HttpsTransportBindingElement
для HTTPS). Обратите внимание, что эти атрибуты нельзя использовать вместе со встроенными привязками WCF. Поддерживаются только привязки с внутренними элементами привязки, поддерживающими IReplyChannel. Кроме этого, свойство MessageVersion привязки должно иметь значение None.
Для снижения подверженности службы действиям недобросовестных пользователей перенос можно защитить с помощью механизма SSL по протоколу HTTP (HTTPS). Для этого необходимо вначале выполнить привязку подходящего сертификата X.509 к конкретному порту компьютера, на котором размещена служба. (Дополнительные сведения см. в разделе Работа с сертификатами.) Во-вторых, добавьте этот элемент в конфигурацию службы и задайте для атрибута httpsGetEnabled
значение true
. После этого следует присвоить атрибуту httpsGetUrl
URL-адрес конечной точки метаданных службы, как показано в следующем примере.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Пример
В следующем примере настраивается служба для предоставления метаданных с помощью <элемента serviceMetadata> . Здесь также настраивается конечная точка предоставления доступа к контракту IMetadataExchange
как реализации протокола WS-MetadataExchange (MEX). В примере используется привязка mexHttpBinding
, являющаяся удобной стандартной привязкой, эквивалентной привязке wsHttpBinding
с режимом безопасности None
. В конечной точке используется относительный адрес mex, который при разрешении с базовым адресом служб приводит к адресу конечной 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>