다음을 통해 공유


ServiceMetadataBehavior.HttpGetEnabled 속성

정의

HTTP/GET 요청을 사용하여 검색을 위한 서비스 메타데이터를 게시하는지 여부를 지정하는 값을 가져오거나 설정합니다.

public:
 property bool HttpGetEnabled { bool get(); void set(bool value); };
public bool HttpGetEnabled { get; set; }
member this.HttpGetEnabled : bool with get, set
Public Property HttpGetEnabled As Boolean

속성 값

Boolean

WSDL이 게시되면 true이고, 그렇지 않으면 false입니다. 기본값은 false입니다.

예제

다음 코드 예제에서는 구성 파일에서 ServiceMetadataBehavior를 사용하여 HTTP/GET 및 WS-Transfer/GET 요청에 대한 메타데이터 지원을 사용하도록 설정하는 방법을 보여 줍니다.

        // Create a new metadata behavior object and set its properties to
        // create a secure endpoint.
        ServiceMetadataBehavior sb = new ServiceMetadataBehavior();
        //sb.EnableHelpPage= true;
        //sb.HttpsGetUrl = new Uri("https://myMachineName:8036/myEndpoint");
        //myServiceHost.Description.Behaviors.Add(sb);
    }

      private void SnippetServiceMetadataBehavior()
      {
          // service for which <<indigo2>> automatically adds a
          // ServiceMetadataBehavior to publish metadata as well as
          // an HTML service help page

          // from C_HowToSecureEndpoint\cs
          // Create a new metadata behavior object and set its properties to
          // create a secure endpoint.
          ServiceMetadataBehavior sb = new ServiceMetadataBehavior();
/*          sb.EnableHelpPage = true;
          sb.enableMetadataExchange = true;
          sb.HttpsGetUrl = new Uri("https://myMachineName:8036/myEndpoint");
          myServiceHost.Description.Behaviors.Add(sb);
 */
      }

    private void Run()
    {

      // T:System.ServiceModel.ServiceMetadataBehavior
      // <Snippet#0>

      // Create a ServiceHost for the service type and use the base address from configuration.
      ServiceHost host = new ServiceHost(typeof(SampleService));
      try
      {
        ServiceMetadataBehavior metad
          = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
        if (metad == null)
          metad = new ServiceMetadataBehavior();
        metad.HttpGetEnabled = true;
        host.Description.Behaviors.Add(metad);
        host.AddServiceEndpoint(
          ServiceMetadataBehavior.MexContractName,
          MetadataExchangeBindings.CreateMexHttpBinding(),
          "mex"
        );

        // The service can now be accessed.
        Console.WriteLine("The service is ready.");
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine();
        Console.ReadLine();

        // Close the ServiceHostBase to shutdown the service.
        host.Close();

        // </Snippet#0>

설명

HttpGetUrl 값이 상대값인 경우 메타데이터가 게시되는 주소는 기본 주소와 서비스 주소 뒤에 ?wsdl 쿼리 문자열을 추가한 것입니다.

HttpGetUrl 값이 절대값인 경우 메타데이터가 게시되는 주소는 HttpGetUrl 값 뒤에 ?wsdl 쿼리 문자열을 추가한 것입니다.

예를 들어, 서비스 주소가 http://localhost:8080/CalculatorService이고 HttpGetUrl이 빈 문자열인 경우 HTTP/GET 메타데이터 주소는 http://localhost:8080/CalculatorService?wsdl입니다.

이 속성을 사용하도록 설정하지 않은 경우 HttpGetUrl을 변경하지 않거나 상대 주소로 설정하면 HTTP에 대한 기본 주소를 사용하지 않고 서비스 호스트를 열 때 런타임에 예외가 throw됩니다.

적용 대상