2013-10-03 3 views
2

wsdl : definitions 바로 아래에 WSDL에 사용자 정의 섹션을 추가하려면 어떻게합니까? 이 같은 것은 : Custom WSDL section IWsdlExportExtension을 구현하는 사용자 지정 특성을 사용하는 것과 같은 작업을 시도했지만, 필자가 필요로하는 결과에 거의 가깝지는 않았습니다.이 작업을 수행하는 것이 올바른지 확실하지 않습니다. 그게 가능하거나 그냥 그 섹션을 파일에 붙여 넣고 web.config에서 externalMetadataLocation을 지정해야합니까?WCF 사용자 정의 WSDL 섹션

답변

1

질문의 wsdl이 (가) asmx에서 genereted되었습니다. 똑같이하고 싶다면 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); 

    } 
} 

바디가 비어있을 수 있습니다. 첫 번째 방법입니다.