IPolicyExportExtension Interfejs

Definicja

Zaimplementuj IPolicyExportExtension , aby wstawić niestandardowe potwierdzenia zasad powiązań w informacji Web Services Description Language (WSDL).Implement IPolicyExportExtension to insert custom binding policy assertions in the Web Services Description Language (WSDL) information.

public interface class IPolicyExportExtension
public interface IPolicyExportExtension
type IPolicyExportExtension = interface
Public Interface IPolicyExportExtension
Pochodne

Przykłady

Poniższy przykład kodu pokazuje implementację IPolicyExportExtension w BindingElement .The following code example shows the implementation of IPolicyExportExtension on a BindingElement. W tym przykładzie niestandardowe elementy powiązania są dołączone do pliku WSDL na poziomie powiązania.In this example, a custom binding element is attached to the WSDL file at the binding level.

#region IPolicyExporter Members
public void ExportPolicy(MetadataExporter exporter, PolicyConversionContext policyContext)
{
  if (exporter == null)
    throw new NullReferenceException("The MetadataExporter object passed to the ExporterBindingElement is null.");
  if (policyContext == null)
    throw new NullReferenceException("The PolicyConversionContext object passed to the ExporterBindingElement is null.");

  XmlElement elem = doc.CreateElement(name1, ns1);
  elem.InnerText = "My custom text.";
  XmlAttribute att = doc.CreateAttribute("MyCustomAttribute", ns1);
  att.Value = "ExampleValue";
  elem.Attributes.Append(att);
  XmlElement subElement = doc.CreateElement("MyCustomSubElement", ns1);
  subElement.InnerText = "Custom Subelement Text.";
  elem.AppendChild(subElement);
  policyContext.GetBindingAssertions().Add(elem);
  Console.WriteLine("The custom policy exporter was called.");
}
#endregion
#Region "IPolicyExporter Members"
Public Sub ExportPolicy(ByVal exporter As MetadataExporter, ByVal policyContext As PolicyConversionContext) Implements IPolicyExportExtension.ExportPolicy
  If exporter Is Nothing Then
    Throw New NullReferenceException("The MetadataExporter object passed to the ExporterBindingElement is null.")
  End If
  If policyContext Is Nothing Then
    Throw New NullReferenceException("The PolicyConversionContext object passed to the ExporterBindingElement is null.")
  End If

  Dim elem As XmlElement = doc.CreateElement(name1, ns1)
  elem.InnerText = "My custom text."
  Dim att As XmlAttribute = doc.CreateAttribute("MyCustomAttribute", ns1)
  att.Value = "ExampleValue"
  elem.Attributes.Append(att)
  Dim subElement As XmlElement = doc.CreateElement("MyCustomSubElement", ns1)
  subElement.InnerText = "Custom Subelement Text."
  elem.AppendChild(subElement)
  policyContext.GetBindingAssertions().Add(elem)
  Console.WriteLine("The custom policy exporter was called.")
End Sub
#End Region

Poniższy przykład kodu przedstawia System.ServiceModel.Configuration.BindingElementExtensionElement implementację, która umożliwia załadowanie poprzedniego eksportu zasad z pliku konfiguracyjnego aplikacji.The following code example shows a System.ServiceModel.Configuration.BindingElementExtensionElement implementation that enables the preceding policy exporter to be loaded from an application configuration file.

public class ExporterBindingElementConfigurationSection : BindingElementExtensionElement
{
  public ExporterBindingElementConfigurationSection()
  { Console.WriteLine("Exporter configuration section created."); }

  public override Type BindingElementType
  { get { return typeof(ExporterBindingElement); } }

  protected override BindingElement CreateBindingElement()
  { return new ExporterBindingElement(); }
}
Public Class ExporterBindingElementConfigurationSection
    Inherits BindingElementExtensionElement
  Public Sub New()
      Console.WriteLine("Exporter configuration section created.")
  End Sub

  Public Overrides ReadOnly Property BindingElementType() As Type
      Get
          Return GetType(ExporterBindingElement)
      End Get
  End Property

  Protected Overrides Function CreateBindingElement() As BindingElement
      Return New ExporterBindingElement()
  End Function
End Class

W poniższym przykładzie przedstawiono plik konfiguracji hosta, który ładuje niestandardowego eksportera zasad.The following example shows the host configuration file that loads the custom policy exporter.

<system.serviceModel>
  <services>
    <service 
      name="Microsoft.WCF.Documentation.StatefulService"
      behaviorConfiguration="addMetadata"
    >
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:8080/StatefulService"/>
        </baseAddresses>
      </host>
      <endpoint 
        address="http://localhost:8080/StatefulService" 
        binding="customBinding" 
        bindingConfiguration="exporter" 
        contract="Microsoft.WCF.Documentation.IStatefulService" 
      />
      <endpoint
        address="mex"
        binding="mexHttpBinding"
        contract="IMetadataExchange"
      />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="addMetadata">
        <serviceMetadata
           httpGetEnabled="true"
           httpGetUrl=""
         />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <bindings>
    <customBinding>
      <!-- 
        Use the name attribute of the binding element as 
        the value of the bindingConfiguration attribute in 
        your endpoint.
      -->
      <binding name ="exporter">
        <!-- Use the name attribute of your binding element extension specified below. -->
        <!-- Be certain the order of your custom binding elements is correct. -->
        <exporterBinding />
        <reliableSession/>
        <textMessageEncoding messageVersion="Default" />
        <httpTransport/>
      </binding>
    </customBinding>
  </bindings>
  <extensions>
    <bindingElementExtensions>
      <!-- Use the add element to associate your bindingelement configuration handler and give it a name to use. -->
      <add 
        type="Microsoft.WCF.Documentation.ExporterBindingElementConfigurationSection,PolicyExtensions" 
        name="exporterBinding" />
    </bindingElementExtensions>
  </extensions>
</system.serviceModel>

W poniższym przykładzie przedstawiono niestandardowe potwierdzenie w pliku WSDL.The following example shows the custom assertion in the WSDL file.

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"

  namespaces removed here for clarity...

>
  <wsp:Policy wsu:Id="CustomBinding_IStatefulService_policy">
    <wsp:ExactlyOne>
      <wsp:All>
        <acme 
          b:MyCustomAttribute="ExampleValue"
          xmlns="http://Microsoft/WCF/Documentation/CustomPolicyAssertions"           xmlns:b="http://Microsoft/WCF/Documentation/CustomPolicyAssertions">
           My custom text.
          <MyCustomSubElement>Custom Subelement Text.</MyCustomSubElement>
        </acme>
        <wsrm:RMAssertion xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm/policy">
          <wsrm:InactivityTimeout Milliseconds="600000" />
          <wsrm:AcknowledgementInterval Milliseconds="200" />
        </wsrm:RMAssertion>
        <wsaw:UsingAddressing />
      </wsp:All>
    </wsp:ExactlyOne>
  </wsp:Policy>
  <wsdl:import namespace="http://microsoft.wcf.documentation" location="" />

Uwagi

Zaimplementuj IPolicyExportExtension interfejs na System.ServiceModel.Channels.BindingElement obiekcie, aby napisać instrukcje dotyczące możliwości punktów końcowych lub wymagań do informacji WSDL ujawnianych przez konkretny punkt końcowy.Implement the IPolicyExportExtension interface on a System.ServiceModel.Channels.BindingElement object to write statements about endpoint capabilities or requirements into the WSDL information exposed by a particular endpoint. Zwykle element powiązania to ten, który implementuje pewne funkcje, ale nie jest to wymagane.Typically the binding element is one that implements some feature, but this is not required. Aby załadować eksportera zasad z pliku konfiguracji, należy zaimplementować element System.ServiceModel.Configuration.BindingElementExtensionElement , który zwraca obiekt eksportera zasad BindingElement .To load your policy exporter from a configuration file, implement a System.ServiceModel.Configuration.BindingElementExtensionElement that returns the policy exporter BindingElement object.

Eksport zasad jest używany przez Windows Communication Foundation (WCF) do używania potwierdzeń zasad do komunikowania się z klientami w przypadku istnienia tego wymagania niestandardowego powiązania lub możliwości punktu końcowego.The policy exporter is used by Windows Communication Foundation (WCF) to use policy assertions to communicate to clients the existence of that custom binding requirement or endpoint capability.

ExportPolicyMetoda przyjmuje MetadataExporter PolicyConversionContext obiekty i.The ExportPolicy method takes the MetadataExporter and PolicyConversionContext objects. Użyj GetBindingAssertions metod, GetMessageBindingAssertions , i, GetOperationBindingAssertions Aby uzyskać kolekcje potwierdzeń zasad, które zostały już wyeksportowane w różnych zakresach.Use the GetBindingAssertions, GetMessageBindingAssertions, and GetOperationBindingAssertions methods to obtain collections of policy assertions that have already been exported at various scopes. Następnie Dodaj niestandardowy obiekt potwierdzenia zasad do odpowiedniej kolekcji.Then add your custom policy assertion object to the appropriate collection.

ContractWłaściwość uwidacznia ContractDescription dla eksportowanego punktu końcowego.The Contract property exposes the ContractDescription for the endpoint that is being exported. Pozwala to IPolicyExportExtension rozszerzeniu na prawidłowe zakres wyeksportowanych potwierdzeń zasad.This allows the IPolicyExportExtension extension to correctly scope their exported policy assertions. Na przykład atrybuty zabezpieczeń w kodzie mogą dodawać zachowania do programu ContractDescription wskazujące, gdzie należy dodać potwierdzenia zasad zabezpieczeń.For example, security attributes in code may add behaviors to the ContractDescription that indicate where security policy assertions should be added.

IPolicyExportExtensionMechanizm obsługuje tylko eksportowanie potwierdzeń zasad w języku WSDL.The IPolicyExportExtension mechanism only supports exporting policy assertions in WSDL. Aby wyeksportować niestandardowe elementy WSDL, należy użyć IWsdlExportExtension mechanizmu do bezpośredniej modyfikacji WSDL.To export custom WSDL elements you must use the IWsdlExportExtension mechanism to modify the WSDL directly.

Po dołączeniu niestandardowych zatwierdzeń zasad do informacji WSDL klienci mogą wykrywać i importować niestandardowe potwierdzenia powiązań przy użyciu IPolicyImportExtension obiektu.Once custom policy assertions have been attached to the WSDL information, clients can detect and import the custom binding assertions by using an IPolicyImportExtension object.

Metody

ExportPolicy(MetadataExporter, PolicyConversionContext)

Zaimplementuj, aby uwzględnić eksportowanie niestandardowych potwierdzeń zasad dotyczących powiązań.Implement to include for exporting a custom policy assertion about bindings.

Dotyczy