IWsdlExportExtension Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Ö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ğinde, WSDL dosyasına WSDL ek açıklamaları olarak özel belge öznitelikleri ekleyen bir IWsdlExportExtension gösterilmektedir.
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.
Uyarı
IWsdlExportExtension uygulamaları, olarak IServiceBehavioruygulanırsa hiçbir zaman çağrılmazsa.
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ını işlemi, her uç nokta için çağrı WsdlExporter.ExportEndpoint yaparak başlarWsdlExporter.ExportEndpoints.
Uç nokta, önce sözleşmesi dışarı aktarılarak dışarı aktarılır. Bir sözleşmeyi dışarı aktarırken, System.ServiceModel.Description.WsdlExporter yöntemi sözleşmedeki tüm IWsdlExportExtension uygulamalarda ve bu sözleşmenin işlem davranışlarında ç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ı üzerindeki 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 özelliği aracılığıyla Errors kurtarılabilir hataları ve uyarıları bildirebilmesi için WsdlExporterIWsdlExportExtension öğ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ı aktarma sırasında bir özel durum oluşturursa, oluşturulan meta veriler tutarsız bir durumdadır ve WsdlExporter nesne atılmalıdır.
Uyarı
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
| Name | Description |
|---|---|
| ExportContract(WsdlExporter, WsdlContractConversionContext) |
Özel Web Hizmetleri Açıklama Dili (WSDL) öğelerini bir sözleşme için oluşturulan WSDL'ye yazar. |
| ExportEndpoint(WsdlExporter, WsdlEndpointConversionContext) |
Özel Web Hizmetleri Açıklama Dili (WSDL) öğelerini bir uç nokta için oluşturulan WSDL'ye yazar. |