Экспорт (0) Печать
Развернуть все
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала
Эта тема еще не получила оценку - Оценить эту тему

IPolicyImportExtension - интерфейс

Определяет метод для объектов, которые импортируют утверждения настраиваемой политики о привязках.

Пространство имен:  System.ServiceModel.Description
Сборка:  System.ServiceModel (в System.ServiceModel.dll)
public interface IPolicyImportExtension

Тип IPolicyImportExtension предоставляет следующие члены.

  ИмяОписание
Открытый методImportPolicyОпределяет метод, который может импортировать утверждения пользовательской политики и добавлять реализующие элементы привязки.
В начало страницы

Реализуйте IPolicyImportExtension интерфейс для поиска сведений языка WSDL, предоставленных определенной конечной точкой для утверждений пользовательской политики о возможностях и требованиях конечной точки. Обычно средство импорта политики производит поиск конкретного утверждения и вставляет элемент привязки, настраивает элемент привязки или изменяет контракт для поддержки требований утверждения.

В отличие от ее аналогом, IPolicyExportExtension" IPolicyImportExtension не требует реализации a BindingElement объект; его можно загрузить с помощью раздела конфигурации клиента, показанный в разделе примеров или программным образом путем добавления его в System.ServiceModel.Description.WsdlImporter конструктор.

ImportPolicy передает 2 объекта в MetadataImporter метод, a PolicyConversionContextи a Windows Communication Foundation (WCF) . Обычно PolicyConversionContext объект уже содержатся утверждения политики для каждой области привязки.

IPolicyImportExtension реализация выполняет следующие шаги:

  1. Располагает утверждение настраиваемой политики, за которое она отвечает, путем вызова то GetOperationBindingAssertions " GetMessageBindingAssertionsили GetBindingAssertionsметоды, в зависимости от области.

  2. Удаляет утверждение политики из коллекции утверждений. PolicyAssertionCollection.Remove метод располагает, возвращает и удаляет утверждение за один шаг.

  3. Измените стек привязок или контракт разделах adding a custom обязательная BindingElement к BindingElements свойство или путем изменения PolicyConversionContext.Contract свойство.

Шаг 2 важен. После вызова всех средств импорта политики WCF проверяет существование оставшихся утверждений политики. Если таковой существует; WCF предполагает, что импорт политики и не был неудачн импортировании связанную привязку.

Важное примечаниеВажно

Поставщик вредоносных метаданных может попытаться отправить неправильно сформированных XML как часть метаданных в попытке воспользоваться средства импорта политики. Настоятельно рекомендуется, чтобы средства импорта настраиваемой политики робастны для всех форм XML, можно передать в него.

Настраиваемый MetadataImporter реализации должны реализовывать свои PolicyConversionContext объект для извлечения утверждений политики, вложенные в пользовательский формат метаданных.

Если нужно экспортировать и импортировать пользовательские элементы, то язык WSDL, не являющихся утверждений политики см. System.ServiceModel.Description.IWsdlExportExtension и System.ServiceModel.Description.IWsdlImportExtension.

ПримечаниеПримечание

Можно использовать средств импорта и консигнантов пользовательской политики с Служебное средство ServiceModel Metadata Utility Tool (Svcutil.exe) с помощью тех же элементов конфигурации в файле конфигурации и /svcutilConfig:<configFile> параметр.

В следующем примере кода показано использование PolicyAssertionCollection.Remove метод, чтобы определить расположения, возвращения и удаления утверждения за один шаг.


  #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


В следующем примере кода показан файл конфигурации клиентского приложения для загрузки средства импорта настраиваемой политики при System.ServiceModel.Description.MetadataResolver вызывает.


<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>


В следующем примере кода показано использование MetadataResolver требуется загрузить и разрешить метаданные в объекты описания.


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


.NET Framework

Поддерживается в версиях: 4.5, 4, 3.5, 3.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

Среда .NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.
Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв

Добавления сообщества

ДОБАВИТЬ
Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2014 Microsoft. Все права защищены.