Sdílet prostřednictvím


Postupy: Konfigurace vlastních vazeb protokolu WS-Metadata Exchange

Tento článek vysvětluje, jak nakonfigurovat vlastní vazbu výměny metadat WS-Metadata. Windows Communication Foundation (WCF) obsahuje čtyři vazby metadat definované systémem, ale metadata můžete publikovat pomocí libovolné vazby. Tento článek ukazuje, jak publikovat metadata pomocí .wsHttpBinding Tato vazba umožňuje bezpečně vystavit metadata. Kód v tomto článku je založený na začínáme.

Použití konfiguračního souboru

  1. V konfiguračním souboru služby přidejte chování služby, které obsahuje serviceMetadata značku:

    <behaviors>  
       <serviceBehaviors>  
         <behavior name="CalculatorServiceBehavior">  
           <serviceMetadata httpGetEnabled="True"/>  
         </behavior>  
       </serviceBehaviors>  
    </behaviors>  
    
  2. behaviorConfiguration Přidejte atribut do značky služby, který odkazuje na toto nové chování:

    <service name="Microsoft.ServiceModel.Samples.CalculatorService"  
    behaviorConfiguration="CalculatorServiceBehavior" />
    
  3. Přidejte koncový bod metadat určující mex jako adresu, wsHttpBinding jako vazbu a IMetadataExchange jako kontrakt:

    <endpoint address="mex"  
              binding="wsHttpBinding"  
              contract="IMetadataExchange" />  
    
  4. Pokud chcete ověřit, že koncový bod výměny metadat funguje správně, přidejte do konfiguračního souboru klienta značku koncového bodu:

    <endpoint name="MyMexEndpoint"               address="http://localhost:8000/servicemodelsamples/service/mex"  
              binding="wsHttpBinding"  
              contract="IMetadataExchange"/>  
    
  5. V metodě Main() klienta vytvořte novou MetadataExchangeClient instanci, nastavte její ResolveMetadataReferences vlastnost na true, volání GetMetadata a následné iterace prostřednictvím kolekce vrácených metadat:

    string mexAddress = "http://localhost:8000/servicemodelsamples/service/mex";  
    
    MetadataExchangeClient mexClient = new MetadataExchangeClient("MyMexEndpoint");  
    mexClient.ResolveMetadataReferences = true;  
    MetadataSet mdSet = mexClient.GetMetadata(new EndpointAddress(mexAddress));  
    foreach (MetadataSection section in mdSet.MetadataSections)  
    Console.WriteLine("Metadata section: " + section.Dialect.ToString());  
    

Konfigurace podle kódu

  1. Vytvoření instance vazby WSHttpBinding :

    WSHttpBinding binding = new WSHttpBinding();  
    
  2. Vytvoření ServiceHost instance:

    ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);  
    
  3. Přidejte koncový bod služby a přidejte ServiceMetadataBehavior instanci:

    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, baseAddress);  
    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();  
    smb.HttpGetEnabled = true;  
    serviceHost.Description.Behaviors.Add(smb);  
    
  4. Přidejte koncový bod výměny metadat, který WSHttpBinding určuje dříve vytvořený:

    serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), binding, mexAddress);  
    
  5. Pokud chcete ověřit, že koncový bod výměny metadat funguje správně, přidejte do konfiguračního souboru klienta značku koncového bodu:

    <endpoint name="MyMexEndpoint"               address="http://localhost:8000/servicemodelsamples/service/mex"  
              binding="wsHttpBinding"  
              contract="IMetadataExchange"/>  
    
  6. V metodě Main() klienta vytvořte novou MetadataExchangeClient instanci, nastavte ResolveMetadataReferences vlastnost na true, volání GetMetadata a iterace prostřednictvím kolekce vrácených metadat:

    string mexAddress = "http://localhost:8000/servicemodelsamples/service/mex";  
    
    MetadataExchangeClient mexClient = new MetadataExchangeClient("MyMexEndpoint");  
    mexClient.ResolveMetadataReferences = true;  
    MetadataSet mdSet = mexClient.GetMetadata(new EndpointAddress(mexAddress));  
    foreach (MetadataSection section in mdSet.MetadataSections)  
    Console.WriteLine("Metadata section: " + section.Dialect.ToString());  
    

Viz také