IWsdlExportExtension Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Definieert eindpunt- of contractgedrag waarmee aangepaste metagegevens kunnen worden geëxporteerd.
public interface class IWsdlExportExtension
public interface IWsdlExportExtension
type IWsdlExportExtension = interface
Public Interface IWsdlExportExtension
- Afgeleid
Voorbeelden
In het volgende codevoorbeeld ziet u een IWsdlExportExtension voorbeeld waarin aangepaste documentatiekenmerken als WSDL-aantekeningen worden toegevoegd aan het WSDL-bestand.
public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context)
{
Console.WriteLine("Inside ExportContract");
if (context.Contract != null)
{
// Inside this block it is the contract-level comment attribute.
// This.Text returns the string for the contract attribute.
// Set the doc element; if this isn't done first, there is no XmlElement in the
// DocumentElement property.
context.WsdlPortType.Documentation = string.Empty;
// Contract comments.
XmlDocument owner = context.WsdlPortType.DocumentationElement.OwnerDocument;
XmlElement summaryElement = Formatter.CreateSummaryElement(owner, this.Text);
context.WsdlPortType.DocumentationElement.AppendChild(summaryElement);
foreach (OperationDescription op in context.Contract.Operations)
{
Operation operation = context.GetOperation(op);
object[] opAttrs = op.SyncMethod.GetCustomAttributes(typeof(WsdlDocumentationAttribute), false);
if (opAttrs.Length == 1)
{
string opComment = ((WsdlDocumentationAttribute)opAttrs[0]).Text;
// This.Text returns the string for the operation-level attributes.
// Set the doc element; if this isn't done first, there is no XmlElement in the
// DocumentElement property.
operation.Documentation = String.Empty;
// Operation C# triple comments.
XmlDocument opOwner = operation.DocumentationElement.OwnerDocument;
XmlElement newSummaryElement = Formatter.CreateSummaryElement(opOwner, opComment);
operation.DocumentationElement.AppendChild(newSummaryElement);
// Get returns information
ParameterInfo returnValue = op.SyncMethod.ReturnParameter;
object[] returnAttrs = returnValue.GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
if (returnAttrs.Length == 1)
{
// <returns>text.</returns>
XmlElement returnsElement =
Formatter.CreateReturnsElement(
opOwner,
((WsdlParameterDocumentationAttribute)returnAttrs[0]).ParamComment
);
operation.DocumentationElement.AppendChild(returnsElement);
}
// Get parameter information.
ParameterInfo[] args = op.SyncMethod.GetParameters();
for (int i = 0; i < args.Length; i++)
{
object[] docAttrs
= args[i].GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
if (docAttrs.Length != 0)
{
// <param name="Int1">Text.</param>
XmlElement newParamElement = opOwner.CreateElement("param");
XmlAttribute paramName = opOwner.CreateAttribute("name");
paramName.Value = args[i].Name;
newParamElement.InnerText
= ((WsdlParameterDocumentationAttribute)docAttrs[0]).ParamComment;
newParamElement.Attributes.Append(paramName);
operation.DocumentationElement.AppendChild(newParamElement);
}
}
}
}
}
Opmerkingen
Als u de WSDL (Web Services Description Language) wilt wijzigen en uitbreiden die wordt geëxporteerd door WsdlExporter objecten, implementeert u de IWsdlExportExtension interface op een eindpunt, contract of bewerkingsgedrag (een object dat implementeert IContractBehavior, IEndpointBehaviorof IOperationBehavior) en voegt u het gedrag toe aan de Behaviors, Behaviorsof Behaviors eigenschap. Daarnaast kunt u ook implementeren IWsdlExportExtension op een BindingElement.
Note
IWsdlExportExtension implementaties worden nooit aangeroepen als ze worden geïmplementeerd als een IServiceBehavior.
IWsdlExportExtension exporteert geen aangepaste beleidsverklaringen, ook al exporteert Windows Communication Foundation (WCF) aangepaste bindingsbeleidsverklaringen naar het juiste element in WSDL. Als u aangepaste beleidsverklaringen wilt exporteren, implementeert u de IPolicyExportExtension interface.
Het publicatieproces voor metagegevens begint met het aanroepen WsdlExporter.ExportEndpointsWsdlExporter.ExportEndpoint van op zijn beurt voor elk eindpunt.
Het eindpunt wordt geëxporteerd door eerst het contract te exporteren. Wanneer u een contract exporteert, roept u System.ServiceModel.Description.WsdlExporter de IWsdlExportExtension.ExportContract methode aan voor alle IWsdlExportExtension implementaties van het contract en het werkingsgedrag voor dat contract. Bewerkingen die jokertekenacties gebruiken, worden niet geëxporteerd in metagegevens, dus IWsdlExportExtension implementaties van bewerkingsgedrag voor deze bewerkingen worden niet geëxporteerd.
Na het exporteren van het contract worden de poort en binding geëxporteerd en worden de beleidsexpressies geëxporteerd.
Zowel de ExportContract als de ExportEndpoint methoden bieden toegang tot de WsdlExporter methode, zodat IWsdlExportExtension implementaties herstelbare fouten en waarschuwingen via de Errors eigenschap kunnen rapporteren. De contextobjecten die in beide methoden worden doorgegeven, bieden handige toewijzingen van geëxporteerde WSDL-elementen aan eigenschappen van ContractDescription en ServiceEndpoint objecten.
Als een IWsdlExportExtension implementatie een uitzondering genereert bij het exporteren, hebben de gegenereerde metagegevens een inconsistente status en moet het WsdlExporter object worden verwijderd.
Note
De aangepaste exportextensie moet worden uitgevoerd nadat de ingebouwde serializer de servicebeschrijving heeft ingevuld.
Methoden
| Name | Description |
|---|---|
| ExportContract(WsdlExporter, WsdlContractConversionContext) |
Schrijft aangepaste WSDL-elementen (Web Services Description Language) naar de gegenereerde WSDL voor een contract. |
| ExportEndpoint(WsdlExporter, WsdlEndpointConversionContext) |
Schrijft aangepaste WSDL-elementen (Web Services Description Language) naar de gegenereerde WSDL voor een eindpunt. |