Eksportuj (0) Drukuj
Rozwiń wszystko
Ten artykuł był przetłumaczony komputerowo. Oryginalny tekst zobaczysz, umieszczając wskaźnik myszy nad zdaniami w artykule. Więcej informacji.
Tłumaczenie
Oryginał
Ten temat nie został jeszcze oceniony - Oceń ten temat

Interfejs IPolicyImportExtension

.NET Framework 4.5

Definiuje metodę dla obiektów, które importować potwierdzeń niestandardowych zasad dotyczących powiązań.

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

Typ IPolicyImportExtension uwidacznia następujące elementy członkowskie.

  NazwaOpis
Metoda publicznaImportPolicyDefiniuje metodę, który można zaimportować potwierdzeń zasad niestandardowych i dodawanie elementów wiązania wykonawczych.
Początek

Wdrożenie IPolicyImportExtension interfejsu do wyszukiwania informacji WSDL udostępniane przez danego punktu końcowego dla potwierdzeń niestandardowych zasad dotyczących możliwości punktu końcowego lub wymagania. Zazwyczaj importer polityki wyszukuje określone potwierdzenia i albo wstawia element wiązania, konfiguruje element wiązania lub modyfikuje Umowy do obsługi wymagania potwierdzenia.

W przeciwieństwie do jej odpowiednik IPolicyExportExtension, IPolicyImportExtension nie wymaga wdrożenia przez BindingElement obiektu; można załadować go za pomocą sekcji konfiguracji klienta, przedstawione w sekcji Przykłady lub programowo przez dodanie go do System.ServiceModel.Description.WsdlImporter konstruktora.

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

IPolicyImportExtension Wykonania wykonuje następujące kroki:

  1. Lokalizuje potwierdzenia zasad niestandardowych, za które jest odpowiedzialna, wywołując albo GetBindingAssertions, GetMessageBindingAssertions, lub GetOperationBindingAssertions metod, w zależności od zakresu.

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

  3. Modyfikowanie stosu powiązania lub umowy przez dodanie wymagane niestandardowe BindingElement do BindingElements właściwość lub modyfikując PolicyConversionContext.Contract właściwości.

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

Ważna uwagaWażne

Dostawca złośliwy metadanych może próbować wysyłać XML utworzonym jako część metadanych próby wykorzystania importera polityki. Zdecydowanie zaleca się tej niestandardowej zasady importerów być solidnie do wszystkich form XML, które mogą być przekazywane do niej.

Niestandardowe MetadataImporter implementacje musi implementować swoje własne PolicyConversionContext dołączony obiekt, aby wyodrębnić potwierdzeń zasad format metadanych niestandardowych.

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.

UwagaUwaga

Można użyć niestandardowej zasady importerów i eksporterów z ServiceModel Metadata Utility Tool (Svcutil.exe) przy użyciu tych samych elementów konfiguracji w pliku konfiguracji i /svcutilConfig:<configFile> opcji.

Poniższy przykład kodu pokazuje użycie PolicyAssertionCollection.Remove metoda lokalizowanie, powrót i usunąć potwierdzenia 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 konfiguracyjnego aplikacji do załadowania importera niestandardowych zasad podczas System.ServiceModel.Description.MetadataResolver jest wywoływana.


<client>
    <endpoint 
      address="http://localhost:8080/StatefulService" 
      binding="wsHttpBinding"
      bindingConfiguration="CustomBinding_IStatefulService" 
      contract="IStatefulService"
      name="CustomBinding_IStatefulService" />
  <metadata>
    <policyImporters>
      <extension type="Microsoft.WCF.Documentation.CustomPolicyImporter, PolicyExtensions"/>
    </policyImporters>
  </metadata>
</client>



<client>
    <endpoint 
      address="http://localhost:8080/StatefulService" 
      binding="wsHttpBinding"
      bindingConfiguration="CustomBinding_IStatefulService" 
      contract="IStatefulService"
      name="CustomBinding_IStatefulService" />
  <metadata>
    <policyImporters>
      <extension type="Microsoft.WCF.Documentation.CustomPolicyImporter, PolicyExtensions"/>
    </policyImporters>
  </metadata>
</client>


Poniższy przykład kodu pokazuje użycie MetadataResolver do pobrania i rozpoznać metadanych do opisu obiektów.


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


.NET Framework

Obsługiwane w: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Obsługiwane w: 4, 3.5 z dodatkiem SP1

Windows 8.1, Windows Server 2012 z dodatkiem R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista z dodatkiem SP2, Windows Server 2008 (instalacja roli Server Core jest nieobsługiwana), Windows Server 2008 R2 (instalacja roli Server Core jest obsługiwana, gdy jest zainstalowany dodatek SP1 lub nowszy; procesory Itanium nie są obsługiwane)

Program .NET Framework nie obsługuje wszystkich wersji każdej platformy. Aby uzyskać listę wszystkich obsługiwanych wersji, zobacz Wymagania systemowe programu .NET Framework.
Czy oceniasz te materiały jako pomocne?
(Pozostało znaków: 1500)
Dziękujemy za opinię.

Zawartość społeczności

Dodaj
Pokaż:
© 2014 Microsoft. Wszelkie prawa zastrzeżone.