Пользовательский раздел WSFL WCF

Как добавить пользовательский раздел в WSDL, который находится непосредственно под определениями wsdl:? Что-то вроде этого:Пользовательский раздел WSDLЯ пробовал такие вещи, как использование пользовательских атрибутов, которые реализуют IWsdlExportExtension, но я даже близко не достиг нужного результата, и я не уверен, что это правильный способ сделать это. Это вообще возможно, или я должен просто вставить этот раздел в файл и указать externalMetadataLocation в web.config?

1 ответ

Решение

Wsdl из вашего вопроса был сгенерирован из asmx. Если вы хотите сделать то же самое, вы должны использовать библиотеку IVIS и украсить свой класс с помощью атрибута ISService. Для WCF вы должны сделать следующее:

        [CustomAttribute]
        public class Service1 : IService1
        {
           public void DoWork()
           {
           }
        }
     public class CustomAttribute:Attribute,  System.ServiceModel.Description.IWsdlExportExtension, System.ServiceModel.Description.IWsdlImportExtension, IContractBehavior
   {
            public void ExportContract(System.ServiceModel.Description.WsdlExporter exporter, System.ServiceModel.Description.WsdlContractConversionContext context)
        {
        BeforeImport(exporter.GeneratedWsdlDocuments, exporter.GeneratedXmlSchemas, new  List<XmlElement>());
        }
     public void  BeforeImport(System.Web.Services.Description.ServiceDescriptionCollection wsdlDocuments, System.Xml.Schema.XmlSchemaSet xmlSchemas, ICollection<XmlElement> policy)
     {
    //throw new NotImplementedException();

        var xdoc = new XmlDocument();
        var element = xdoc.CreateElement("ivis","WebServiceInfo", "ivis");
        var node = xdoc.CreateNode(XmlNodeType.Element, "Identifier", "ivis");
        node.InnerText = "URN:IVIS:100001:ISS-IeM";
        element.AppendChild(node);
        /// and so on :)
        wsdlDocuments[0].Extensions.Add(element);

     }
}

Тело всех остальных методов для реализованных интерфейсов может быть пустым. Это в первом подходе.

Другие вопросы по тегам