Bu makale, makine tarafından çevrilmiştir. Makaleyi İngilizce dilinde görüntülemek için İngilizce onay kutusunu işaretleyin. Ayrıca, fare işaretçisiyle İngilizce metnin üzerine gelerek metni açılır pencerede de görüntüleyebilirsiniz.
Çeviri
İngilizce

IPolicyImportExtension Arabirimi

 

Bağlamaları hakkında özel ilke onaylamalarını içe nesneler için bir yöntemi tanımlar.

Ad alanı:   System.ServiceModel.Description
Derleme:  System.ServiceModel (System.ServiceModel.dll içinde)

public interface IPolicyImportExtension

AdıAçıklama
System_CAPS_pubmethodImportPolicy(MetadataImporter, PolicyConversionContext)

Özel ilke onaylamalarını içe aktarabilir ve uygulama bağlama öğeleri ekleme yöntemi tanımlar.

Uygulama IPolicyImportExtension endpoint özellikleri veya gereksinimleri hakkında özel ilke onaylamalarını için belirli bir uç noktası tarafından sunulan WSDL bilgileri aramak için arabirim. Genellikle, bir ilke alma belirli bir onaylama ve her iki eklemeleri için bağlama öğesi arar, bağlama öğesi yapılandırır veya onaylama işlemi gereksinimlerini desteklemek için sözleşme değiştirir.

Aksine, karşılık gelen IPolicyExportExtension, IPolicyImportExtension uygulaması tarafından gerektirmeyen bir BindingElement Nesne; örnekler bölümünde veya program aracılığıyla ekleyerek gösterilen istemci yapılandırma bölümünü kullanarak yük System.ServiceModel.Description.WsdlImporter Oluşturucusu.

Windows Communication Foundation (WCF) iki nesne geçirir ImportPolicy yöntemi, bir MetadataImporter ve bir PolicyConversionContext. Genellikle PolicyConversionContext nesne zaten her bağlama kapsam için ilke onaylamalarını içerir.

Bir IPolicyImportExtension uygulaması aşağıdaki adımları gerçekleştirir:

  1. Gerek sorumlu ya da çağırarak özel ilke onaylama bulur GetBindingAssertions, GetMessageBindingAssertions, veya GetOperationBindingAssertions kapsam bağlı olarak yöntemler.

  2. İlke onay onaylama koleksiyondan kaldırır. PolicyAssertionCollection.Remove Yöntemi bulur, döndürür ve tek bir adımda onaylama kaldırır.

  3. Bağlama yığın veya sözleşme ya da gerekli özel ekleyerek değiştirmeye BindingElement için BindingElements özelliğini değiştirerek veya PolicyConversionContext.Contract özelliği.

2. adım önemlidir. Tüm ilke alma araçları çağrıldıktan sonra WCF kalan tüm ilke onaylamalarını varlığını denetler. Bir tane varsa WCF ilke alma işlemi başarısız oldu ve ilişkili bağlama almaz varsayar.

System_CAPS_importantÖnemli

Kötü amaçlı meta veri sağlayıcı hatalı biçimlendirilmiş XML meta verilerinin bir parçası bir ilke alma yararlanma girişimi göndermeye. Bu özel ilke alma araçları güçlü kendisine geçirilen XML tüm formlara önerilir.

Özel MetadataImporter uygulamaları uygulanmalı kendi PolicyConversionContext ilke onaylamalarını ayıklamak için nesne eklenmiş için özel meta veri biçimi.

İlke onaylamalarını olmayan özel WSDL öğeleri içeri ve dışarı aktarmak istiyorsanız, bkz: System.ServiceModel.Description.IWsdlExportExtension ve System.ServiceModel.Description.IWsdlImportExtension.

System_CAPS_noteNot

Özel ilke alıcılar ve vericiler ile kullanabileceğiniz ServiceModel Meta Veri Yardımcı Programracı (Svcutil.exe) aynı yapılandırma öğelerini kullanarak bir yapılandırma dosyasında ve /svcutilConfig:<configFile> seçeneği.

Aşağıdaki kod örneği kullanımını gösterir PolicyAssertionCollection.Remove bulun, dönüş ve tek bir adımda onaylama işlemi kaldırmak için yöntemi.

  #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

Aşağıdaki kod örneğinde istemci özel ilke alma programı yüklemek için uygulama yapılandırma dosyası gösterir olduğunda System.ServiceModel.Description.MetadataResolver çağrılır.

Aşağıdaki kod örneği kullanımını gösterir MetadataResolver karşıdan yüklemek ve açıklama nesnelerine meta verileri çözümlemek için.

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

.NET Framework
3.0 sonrasında kullanılabilir
Başa dön
Show: