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