<serviceMetadata ><serviceMetadata>

サービス メタデータと関連情報の公開を指定します。Specifies the publication of service metadata and associated information.

<configuration> <configuration>
   <System.servicemodel >   <system.serviceModel>
     <動作 >     <behaviors>
       <serviceBehaviors >       <serviceBehaviors>
         <動作 >         <behavior>
           <serviceMetadata >          <serviceMetadata>

構文Syntax

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

属性および要素Attributes and Elements

以降のセクションでは、属性、子要素、および親要素について説明します。The following sections describe attributes, child elements, and parent elements.

属性Attributes

属性Attribute 説明Description
externalMetadataLocationexternalMetadataLocation WSDL ファイルの位置を含む URI。これは、自動生成される WSDL の代わりに、WSDL 要求および MEX 要求に応答してユーザーに返されます。A Uri that contains the location of a WSDL file, which is returned to the user in response to WSDL and MEX requests instead of the auto-generated WSDL. この属性が設定されていない場合は、既定の WSDL が返されます。When this attribute is not set, the default WSDL is returned. 既定値は空の文字列です。The default is an empty string.
httpGetBindinghttpGetBinding HTTP GET 経由でメタデータを取得する場合に使用するバインディングの種類を指定する文字列。A string that specifies the type of the binding that will be used for metadata retrieval via HTTP GET. この設定は省略可能です。This setting is optional. 指定しない場合、既定のバインディングが使用されます。If it is not specified, the default bindings will be used.

IReplyChannel をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。Only bindings with inner binding elements that support IReplyChannel will be supported. さらに、バインディングの MessageVersion プロパティが None である必要があります。Additionally, the MessageVersion property of the binding must be None.
httpGetBindingConfigurationhttpGetBindingConfiguration このバインディングの追加の構成情報を参照する httpGetBinding 属性に指定されるバインディングの名前を設定する文字列。A string that sets the name of the binding that is specified in the httpGetBinding attribute, which references to the additional configuration information of this binding. 同じ名前を <bindings> セクションに定義する必要があります。The same name must be defined in the <bindings> section.
httpGetEnabledhttpGetEnabled HTTP/Get 要求を使用した取得用にサービス メタデータを公開するかどうかを指定するブール値。A Boolean value that specifies whether to publish service metadata for retrieval using an HTTP/Get request. 既定値は false です。The default is false.

httpGetUrl 属性が指定されていない場合、メタデータが公開されるアドレスは、サービス アドレスに "?wsdl" を加えたものになります。If the httpGetUrl attribute is not specified, the address at which the metadata is published is the service address plus a "?wsdl". たとえば、サービスアドレスが http://localhost:8080/CalculatorService"" の場合、HTTP/Get メタデータアドレスは "http://localhost:8080/CalculatorService?wsdl" です。For example, if the service address is "http://localhost:8080/CalculatorService", the HTTP/Get metadata address is "http://localhost:8080/CalculatorService?wsdl".

このプロパティがfalseの場合、またはサービスのアドレスが HTTP または HTTPS に基づいていない場合、"? wsdl" は無視されます。If this property is false, or the address of the service is not based on HTTP or HTTPS, "?wsdl" is ignored.
httpGetUrlhttpGetUrl HTTP/Get 要求を使用した取得用にメタデータが公開されるアドレスを指定する URI。A Uri that specifies the address at which the metadata is published for retrieval using an HTTP/Get request. 相対 URI を指定した場合、サービスのベース アドレスに対する相対として処理されます。If a relative Uri is specified it will be treated as relative to the service’s base address.
httpsGetBindinghttpsGetBinding HTTPS GET 経由でメタデータを取得する場合に使用するバインディングの種類を指定する文字列。A string that specifies the type of the binding that will be used for metadata retrieval via HTTPS GET. この設定は省略可能です。This setting is optional. 指定しない場合、既定のバインディングが使用されます。If it is not specified, the default bindings will be used.

IReplyChannel をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。Only bindings with inner binding elements that support IReplyChannel will be supported. さらに、バインディングの MessageVersion プロパティが None である必要があります。Additionally, the MessageVersion property of the binding must be None.
httpsGetBindingConfigurationhttpsGetBindingConfiguration このバインディングの追加の構成情報を参照する httpsGetBinding 属性に指定されるバインディングの名前を設定する文字列。A string that sets the name of the binding that is specified in the httpsGetBinding attribute, which references to the additional configuration information of this binding. 同じ名前を <bindings> セクションに定義する必要があります。The same name must be defined in the <bindings> section.
httpsGetEnabledhttpsGetEnabled HTTPS/Get 要求を使用した取得用にサービス メタデータを公開するかどうかを指定するブール値。A Boolean value that specifies whether to publish service metadata for retrieval using an HTTPS/Get request. 既定値は false です。The default is false.

httpsGetUrl 属性が指定されていない場合、メタデータが公開されるアドレスは、サービス アドレスに "?wsdl" を加えたものになります。If the httpsGetUrl attribute is not specified, the address at which the metadata is published is the service address plus a "?wsdl". たとえば、サービスアドレスが https://localhost:8080/CalculatorService"" の場合、HTTP/Get メタデータアドレスは "https://localhost:8080/CalculatorService?wsdl" です。For example, if the service address is "https://localhost:8080/CalculatorService", the HTTP/Get metadata address is "https://localhost:8080/CalculatorService?wsdl".

このプロパティがfalseの場合、またはサービスのアドレスが HTTP または HTTPS に基づいていない場合、"? wsdl" は無視されます。If this property is false, or the address of the service is not based on HTTP or HTTPS, "?wsdl" is ignored.
httpsGetUrlhttpsGetUrl HTTPS/Get 要求を使用した取得用にメタデータが公開されるアドレスを指定する URI。A Uri that specifies the address at which the metadata is published for retrieval using an HTTPS/Get request.
policyVersionpolicyVersion 使用する WS-Policy 仕様のバージョンを指定する文字列。A string that specifies the version of the WS-Policy specification being used. この属性は PolicyVersion 型です。This attribute is of type PolicyVersion.

子要素Child Elements

なしNone

親要素Parent Elements

要素Element 説明Description
<behavior><behavior> 動作の要素を指定します。Specifies a behavior element.

RemarksRemarks

この構成要素を使用すると、サービスのメタデータ公開機能を制御できます。This configuration element allows you to control the metadata publishing features of a service. 機密性の高いサービスメタデータが誤って公開されるのを防ぐために、Windows Communication Foundation (WCF) サービスの既定の構成では、メタデータの公開が無効になっています。To prevent unintentional disclosure of potentially sensitive service metadata, the default configuration for Windows Communication Foundation (WCF) services disables metadata publishing. この動作は、既定の設定ではセキュリティで保護されますが、同時に、サービスの構成の中でメタデータ発行の動作が明示的に有効化されない限り、サービスの呼び出しに必要なクライアント コードをメタデータ インポート ツール (Svcutil.exe など) を使用して生成できないことも意味します。This behavior is secure by default, but also means that you cannot use a metadata import tool (such as Svcutil.exe) to generate the client code required to call the service unless the service’s metadata publishing behavior is explicitly enabled in configuration. この構成要素を使用すると、サービスのこの公開動作を有効にできます。Using this configuration element, you can enable this publishing behavior for your service.

この動作を構成する詳細な例については、「メタデータの公開動作」を参照してください。For a detailed example of configuring this behavior, see Metadata Publishing Behavior.

オプションの httpGetBinding 属性および httpsGetBinding 属性を使用すると、HTTP GET または HTTPS GET を介してメタデータを取得するバインディングを構成できます。The optional httpGetBinding and httpsGetBinding attributes allow you to configure the bindings used for metadata retrieval via HTTP GET (or HTTPS GET). これらの属性を指定しない場合、メタデータの取得には、適切な既定のバインディグ (HTTP の場合は HttpTransportBindingElement、HTTPS の場合は HttpsTransportBindingElement) が使用されます。If they are not specified, the default bindings (HttpTransportBindingElement, in the case of HTTP and HttpsTransportBindingElement, in the case of HTTPS) are used for metadata retrieval as appropriate. これらの属性は、組み込みの WCF バインディングでは使用できないことに注意してください。Notice that you cannot use these attributes with the built-in WCF bindings. IReplyChannel をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。Only bindings with inner binding elements that support IReplyChannel will be supported. さらに、バインディングの MessageVersion プロパティが None である必要があります。Additionally, the MessageVersion property of the binding must be None.

サービスが悪意のあるユーザーに公開されないようにするために、SSL over HTTP (HTTPS) 機構を使用して転送をセキュリティで保護できます。To reduce the exposure of a service to malicious users, it is possible to secure the transfer using the SSL over HTTP (HTTPS) mechanism. 転送を保護するには、まず、サービスをホストしているコンピューターの特定のポートに適切な X.509 証明書をバインドする必要があります。To do so, you must first bind a suitable X.509 certificate to a specific port on the computer that is hosting the service. (詳細については、「証明書の使用」を参照してください)。次に、この要素をサービス構成に追加し、httpsGetEnabled 属性を true に設定します。(For more information, see Working with Certificates.) Second, add this element to the service configuration and set the httpsGetEnabled attribute to true. 最後に、次の例に示すように、httpsGetUrl 属性をサービス メタデータ エンドポイントの URL に設定します。Finally, set the httpsGetUrl attribute to the URL of the service metadata endpoint, as shown in the following example.

<behaviors>
  <serviceBehaviors>
    <behavior name="NewBehavior">
      <serviceMetadata httpsGetEnabled="true"
                       httpsGetUrl="https://myComputerName/myEndpoint" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Example

次の例では、 <serviceMetadata > 要素を使用してメタデータを公開するようにサービスを構成します。The following example configure a service to expose metadata by using the <serviceMetadata> element. さらに、IMetadataExchange コントラクトを WS-MetadataExchange (MEX) プロトコルの実装として公開するエンドポイントも構成します。It also configures an endpoint to expose the IMetadataExchange contract as an implementation of a WS-MetadataExchange (MEX) protocol. この例では、mexHttpBinding を使用します。これは使いやすい標準バインドで、セキュリティ モードが wsHttpBinding に設定されている None と同等です。The example uses the mexHttpBinding, which is a convenience standard binding that is equivalent to the wsHttpBinding with the security mode set to None. 相対アドレスの"mex"が使用されるエンドポイントには、どのに対して解決とサービスのベース アドレスのエンドポイント アドレス http://localhost/servicemodelsamples/service.svc/mex です。A relative address of "mex" is used in the endpoint, which when resolved against the services base address results in an endpoint address of 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>

関連項目See also