Ten artykuł został przetłumaczony przez maszynę. Aby wyświetlić jego treść w języku angielskim, zaznacz pole wyboru Angielski. Możesz też wyświetlić angielski tekst w okienku wyskakującym, przesuwając wskaźnik myszy nad konkretny tekst”.
Tłumaczenie
Angielski

Interfejs IPolicyImportExtension

.NET Framework (current version)
 

Definiuje metodę dla obiektów, które importowanie niestandardowych asercji zasad dotyczących powiązań.

Przestrzeń nazw:   System.ServiceModel.Description
Zestaw:  System.ServiceModel (w System.ServiceModel.dll)

public interface IPolicyImportExtension

NazwaOpis
System_CAPS_pubmethodImportPolicy(MetadataImporter, PolicyConversionContext)

Definiuje metodę, która może importowanie niestandardowych asercji zasad i Dodaj wykonawczych elementy wiązania.

Implementowanie IPolicyImportExtension interfejs do wyszukiwania informacji WSDL udostępnianych przez danego punktu końcowego dla potwierdzeń niestandardowe zasady dotyczące możliwości punktu końcowego lub wymagania. Zazwyczaj importera zasad wyszukuje określone potwierdzenia i albo wstawia element wiązania, konfiguruje elementu wiązania lub modyfikuje Umowy, aby spełnić wymagania dotyczące potwierdzenia.

W odróżnieniu od jego odpowiednika IPolicyExportExtension, IPolicyImportExtension nie wymaga wdrożenia przez BindingElement obiektu; można załadować go za pomocą przedstawione w sekcji Przykłady lub programowo przez dodanie go do sekcji konfiguracji klienta System.ServiceModel.Description.WsdlImporter Konstruktor.

Windows Communication Foundation (WCF) przekazuje dwa obiekty, aby ImportPolicy metody, MetadataImporter i PolicyConversionContext. Zazwyczaj PolicyConversionContext obiekt zawiera już potwierdzeń zasad dla każdego zakresu powiązania.

IPolicyImportExtension Implementacja wykonuje następujące czynności:

  1. Lokalizuje potwierdzenia zasad niestandardowych, dla którego jest odpowiedzialny przez wywołanie albo GetBindingAssertions, GetMessageBindingAssertions, lub GetOperationBindingAssertions metod, w zależności od zakresu.

  2. Usuwa potwierdzenia zasad z kolekcji potwierdzenia. PolicyAssertionCollection.Remove Metoda lokalizuje, zwraca i usuwa potwierdzenie w jednym kroku.

  3. Zmodyfikuj stosu powiązanie lub umowy, dodając niestandardowe wymagane BindingElement do BindingElements Właściwości lub zmieniając PolicyConversionContext.Contract Właściwości.

Ważne jest krok 2. Po wywołaniu wszystkich importerów zasad WCF sprawdza istnienie żadnych potwierdzeń zasad, które pozostają. Jeśli istnieje, WCF zakłada, że importowanie zasad nie powiodło się i nie importuje skojarzone powiązania.

System_CAPS_importantWażne

Dostawca złośliwego metadanych spróbować wysłać nieprawidłowo sformułowany kod XML jako część metadanych w celu wykorzystania importera zasad. Zdecydowanie zalecane jest tej zasady niestandardowe importerów być skuteczne dla wszystkich formularzy XML, który może być przekazywany do niego.

Niestandardowe MetadataImporter implementacje musi implementować własnych PolicyConversionContext obiekt do wyodrębnienia potwierdzeń zasad dołączony do formatu niestandardowych metadanych.

Jeśli chcesz eksportować i importować niestandardowe elementy WSDL, które nie są potwierdzeń zasad, zobacz System.ServiceModel.Description.IWsdlExportExtension i System.ServiceModel.Description.IWsdlImportExtension.

System_CAPS_noteUwaga

Można użyć zasad niestandardowych importerów i eksporterów z Narzędzie do obsługi metadanych elementu ServiceModel (Svcutil.exe) przy użyciu tych samych elementów konfiguracji w pliku konfiguracji i /svcutilConfig:<configFile> opcji.

W poniższym przykładzie kodu pokazano sposób użycia PolicyAssertionCollection.Remove metodę, aby zlokalizować wróć i Usuń potwierdzenie w jednym kroku.

  #region IPolicyImporter Members
  public const string name1 = "acme";
  public const string ns1 = "http://Microsoft/WCF/Documentation/CustomPolicyAssertions";

  /*
   * Importing policy assertions usually means modifying the bindingelement stack in some way
   * to support the policy assertion. The procedure is:
   * 1. Find the custom assertion to import.
   * 2. Insert a supporting custom bindingelement or modify the current binding element collection
   *     to support the assertion.
   * 3. Remove the assertion from the collection. Once the ImportPolicy method has returned, 
   *     any remaining assertions for the binding cause the binding to fail import and not be 
   *     constructed.
   */
  public void ImportPolicy(MetadataImporter importer, PolicyConversionContext context)
  {
    Console.WriteLine("The custom policy importer has been called.");
    // Locate the custom assertion and remove it.
    XmlElement customAssertion = context.GetBindingAssertions().Remove(name1, ns1);
    if (customAssertion != null)
    {
      Console.WriteLine(
        "Removed our custom assertion from the imported "
        + "assertions collection and inserting our custom binding element."
      );
      // Here we would add the binding modification that implemented the policy.
      // This sample does not do this.
      Console.ForegroundColor = ConsoleColor.Red;
      Console.WriteLine(customAssertion.NamespaceURI + " : " + customAssertion.Name);
      Console.WriteLine(customAssertion.OuterXml);
      Console.ForegroundColor = ConsoleColor.Gray;
    }
 }
#endregion

Poniższy przykład kodu pokazuje klienta pliku konfiguracji aplikacji do załadowania importera niestandardowych zasad podczas System.ServiceModel.Description.MetadataResolver jest wywoływany.

W poniższym przykładzie kodu pokazano sposób użycia MetadataResolver do pobrania i rozpoznania metadanych do opisu obiektów.

// Download all metadata. 
ServiceEndpointCollection endpoints
  = MetadataResolver.Resolve(
    typeof(IStatefulService),
    new EndpointAddress("http://localhost:8080/StatefulService/mex")
  );

.NET Framework
Dostępne od 3.0
Powrót do początku
Pokaż: