Aracılığıyla paylaş


IWsdlExportExtension Arabirim

Tanım

Özel meta verileri dışarı aktarabilen uç nokta veya sözleşme davranışlarını tanımlar.

public interface class IWsdlExportExtension
public interface IWsdlExportExtension
type IWsdlExportExtension = interface
Public Interface IWsdlExportExtension
Türetilmiş

Örnekler

Aşağıdaki kod örneği, WSDL dosyasına WSDL ek açıklamaları olarak özel belge öznitelikleri ekleyen bir IWsdlExportExtension gösterir.

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);
                }
            }
        }
    }
}

Açıklamalar

Nesneler tarafından WsdlExporter dışarı aktarılan Web Hizmetleri Açıklama Dilini (WSDL) değiştirmek ve genişletmek için, arabirimi bir uç nokta, sözleşme veya işlem davranışına (, IEndpointBehaviorveya IOperationBehavior) uygulayan IContractBehaviorbir nesneye uygulayın IWsdlExportExtension ve davranışı , Behaviorsveya Behaviors özelliğine Behaviorsekleyin. Ayrıca, bir BindingElementüzerinde de uygulayabilirsinizIWsdlExportExtension.

Not

IWsdlExportExtension uygulamaları, olarak IServiceBehavioruygulandığında hiçbir zaman çağrılmaz.

IWsdlExportExtension , Windows Communication Foundation (WCF) özel bağlama ilkesi onaylarını WSDL içindeki uygun öğeye dışarı aktarsa bile özel ilke onaylarını dışarı aktarmaz. Özel ilke onaylarını dışarı aktarmak istiyorsanız arabirimini IPolicyExportExtension uygulayın.

Meta veri yayımlama işlemi, her uç nokta için çağrı yapan WsdlExporter.ExportEndpoint çağrısıyla WsdlExporter.ExportEndpoints başlar.

Uç nokta, önce sözleşmesi dışarı aktarılarak dışarı aktarılır. Bir sözleşmeyi System.ServiceModel.Description.WsdlExporter dışarı aktarırken, sözleşmedeki tüm IWsdlExportExtension uygulamalar ve bu sözleşmenin işlem davranışları için yöntemini çağırırIWsdlExportExtension.ExportContract. Joker karakter eylemleri kullanan işlemler meta verilerde dışarı aktarılmaz, bu nedenle IWsdlExportExtension bu işlemlerin işlem davranışlarına yönelik uygulamalar dışarı aktarılmaz.

Sözleşme dışarı aktarıldıktan sonra bağlantı noktası ve bağlama dışarı aktarılır ve dışarı aktarılan ilke ifadeleri eklenir.

ExportContract Hem hem de ExportEndpoint yöntemleri, uygulamaların kurtarılabilir hataları ve uyarıları özelliği aracılığıyla Errors bildirebilmesi IWsdlExportExtension için WsdlExporter öğesine erişim sağlar. Her iki yönteme geçirilen bağlam nesneleri, dışarı aktarılan WSDL öğelerinden ve ServiceEndpoint nesnelerinin ContractDescription özelliklerine uygun eşlemeler sağlar.

Bir IWsdlExportExtension uygulama dışarı aktarmada bir özel durum oluşturursa, oluşturulan meta veriler tutarsız bir durumdadır ve WsdlExporter nesne atılmalıdır.

Not

Yerleşik seri hale getirici hizmet açıklamasını doldurduktan sonra özel dışarı aktarma uzantısı çalıştırılmalıdır.

Yöntemler

ExportContract(WsdlExporter, WsdlContractConversionContext)

Bir sözleşme için oluşturulan WSDL'ye özel Web Hizmetleri Açıklama Dili (WSDL) öğeleri yazar.

ExportEndpoint(WsdlExporter, WsdlEndpointConversionContext)

Bir uç nokta için oluşturulan WSDL'ye özel Web Hizmetleri Açıklama Dili (WSDL) öğeleri yazar.

Şunlara uygulanır