コード例 #1
0
        public void ExportEndpointTest2()
        {
            WsdlExporter we = new WsdlExporter();

            ServiceEndpoint se = new ServiceEndpoint(ContractDescription.GetContract(typeof(IEchoService2)));

            se.Binding = new BasicHttpBinding();
            se.Address = new EndpointAddress("http://localhost:8080");
            we.ExportEndpoint(se);

            MetadataSet ms = we.GetGeneratedMetadata();

            Assert.AreEqual(5, ms.MetadataSections.Count);

            WSServiceDescription sd = ms.MetadataSections [0].Metadata as WSServiceDescription;

            CheckContract_IEchoService2(ms, "#eet20");
            CheckServicePort(GetService(GetServiceDescription(ms, "http://tempuri.org/", "#eet21"), "service", "ExportEndpointTest"),
                             "BasicHttpBinding_ThisIsEchoService", new XmlQualifiedName("BasicHttpBinding_ThisIsEchoService", "http://tempuri.org/"),
                             "http://localhost:8080/", "#eet22");

            CheckBasicHttpBinding(sd, "BasicHttpBinding_ThisIsEchoService",
                                  new XmlQualifiedName("ThisIsEchoService", "http://tempuri.org/"),
                                  "Echo", "http://tempuri.org/ThisIsEchoService/Echo", true, true, "#eet03");

            //FIXME: CheckXmlSchema
        }
コード例 #2
0
        private MetadataSet GetExportedMetadata(ServiceDescription serviceDescription)
        {
            Collection <ServiceEndpoint> endpoints = new Collection <ServiceEndpoint>();

            foreach (var endpoint in serviceDescription.Endpoints)
            {
                if (endpoint.Contract.ContractType == typeof(IMetadataProvisionService))
                {
                    continue;
                }
                ServiceEndpoint newEndpoint = new ServiceEndpoint(endpoint.Contract, endpoint.Binding, endpoint.Address);
                newEndpoint.Name = endpoint.Name;
                foreach (var behavior in endpoint.Behaviors)
                {
                    newEndpoint.Behaviors.Add(behavior);
                }
                endpoints.Add(newEndpoint);
            }

            WsdlExporter     wsdlExporter       = new WsdlExporter();
            XmlQualifiedName wsxmlQualifiedName = new XmlQualifiedName(serviceDescription.Name, serviceDescription.Namespace);

            wsdlExporter.ExportEndpoints(endpoints, wsxmlQualifiedName);
            return(wsdlExporter.GetGeneratedMetadata());
        }
コード例 #3
0
 void WriteTo(WsdlExporter we, string name)
 {
     using (XmlTextWriter xw = new XmlTextWriter(name, Encoding.UTF8)) {
         xw.Formatting = Formatting.Indented;
         we.GetGeneratedMetadata().WriteTo(xw);
     }
 }
コード例 #4
0
        public void ExportEndpointTest()
        {
            WsdlExporter we = new WsdlExporter();

            ServiceEndpoint se = new ServiceEndpoint(ContractDescription.GetContract(typeof(IEchoService)));

            se.Binding = new BasicHttpBinding();
            se.Address = new EndpointAddress("http://localhost:8080");
            //TEST Invalid name: 5se.Name = "Service#1";
            //se.Name = "Service0";
            //se.ListenUri = new Uri ("http://localhost:8080/svc");

            we.ExportEndpoint(se);

            MetadataSet ms = we.GetGeneratedMetadata();

            Assert.AreEqual(6, ms.MetadataSections.Count);
            CheckContract_IEchoService(ms, "#eet01");

            WSServiceDescription sd = GetServiceDescription(ms, "http://tempuri.org/", "ExportEndpointTest");

            CheckServicePort(GetService(sd, "service", "ExportEndpointTest"),
                             "BasicHttpBinding_IEchoService", new XmlQualifiedName("BasicHttpBinding_IEchoService", "http://tempuri.org/"),
                             "http://localhost:8080/", "#eet02");

            CheckBasicHttpBinding(sd, "BasicHttpBinding_IEchoService", new XmlQualifiedName("IEchoService", "http://myns/echo"),
                                  "Echo", "http://myns/echo/IEchoService/Echo", true, true, "#eet03");
        }
コード例 #5
0
        private XmlDocument ExportEndpoints()
        {
            WsdlExporter exporter = new WsdlExporter();

            foreach (ServiceEndpoint ep in endpoints)
            {
                exporter.ExportEndpoint(ep);
            }

            MetadataSet   metadataSet = exporter.GetGeneratedMetadata();
            StringBuilder b           = new StringBuilder();
            StringWriter  sw          = new StringWriter(b);
            XmlTextWriter tw          = new XmlTextWriter(sw);

            foreach (MetadataSection section in metadataSet.MetadataSections)
            {
                if (section.Metadata is System.Web.Services.Description.ServiceDescription)
                {
                    System.Web.Services.Description.ServiceDescription sd = (System.Web.Services.Description.ServiceDescription)section.Metadata;
                    sd.Write(tw);
                }
            }

            string wcfWsdl = b.ToString();
            // Read it in to an XmlDocument.
            XmlDocument wcfWsdlDoc = new XmlDocument();

            wcfWsdlDoc.LoadXml(wcfWsdl);
            return(wcfWsdlDoc);
        }
コード例 #6
0
ファイル: program.cs プロジェクト: zhimaqiao51/docs
        static void Main(string[] args)
        {
            // <Snippet1>
            WsdlExporter exporter = new WsdlExporter();

            // </Snippet1>
            // <Snippet2>
            exporter.PolicyVersion = PolicyVersion.Policy15;
            // </Snippet2>

            // <Snippet3>
            ServiceEndpoint []  myServiceEndpoints = new ServiceEndpoint[2];
            ContractDescription myDescription      = new ContractDescription("myContract");

            myServiceEndpoints[0] = new ServiceEndpoint(myDescription, new BasicHttpBinding(), new EndpointAddress("http://localhost/myservice"));
            myServiceEndpoints[1] = new ServiceEndpoint(myDescription, new BasicHttpBinding(), new EndpointAddress("http://localhost/myservice"));
            // </Snippet3>

            // <Snippet4>
            // Export all endpoints for each endpoint in collection.
            foreach (ServiceEndpoint endpoint in myServiceEndpoints)
            {
                exporter.ExportEndpoint(endpoint);
            }
            // </Snippet4>
            // <Snippet5>
            // If there are no errors, get the documents.
            MetadataSet metadataDocs = null;

            if (exporter.Errors.Count != 0)
            {
                metadataDocs = exporter.GetGeneratedMetadata();
            }
            // </Snippet5>
        }
コード例 #7
0
        public static XmlDocument GetSingleWsdl <TContract>(out string[] errors)
        {
            var description  = ContractDescription.GetContract(typeof(TContract));
            var wsdlExporter = new WsdlExporter();

            wsdlExporter.ExportContract(description);
            errors = wsdlExporter.Errors.Select(e => e.Message).ToArray();

            var wsdlMetadata = wsdlExporter.GetGeneratedMetadata();

            var asy            = Assembly.GetAssembly(typeof(WsdlExporter));
            var wsdlHelperType = asy.GetType("System.ServiceModel.Description.WsdlHelper", true);
            var getSingleWsdl  = wsdlHelperType.GetMethod("GetSingleWsdl", BindingFlags.Public | BindingFlags.Static);

            var parameters = new object[]
            {
                wsdlMetadata
            };
            var serviceDescription = (ServiceDescription)getSingleWsdl.Invoke(null, parameters);

            var doc    = new XmlDocument();
            var writer = doc.CreateNavigator().AppendChild();

            try
            {
                serviceDescription.Write(writer);

                return(doc);
            }
            finally
            {
                writer.Close();
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: justin0522/hello_WCF
        static MetadataSet GetMetadata(Type serviceType)
        {
            var description = ContractDescription.GetContract(serviceType);
            var exporter    = new WsdlExporter();

            exporter.ExportContract(description);
            var metadata = exporter.GetGeneratedMetadata();

            return(metadata);
        }
コード例 #9
0
        public void ExportContract2()
        {
            WsdlExporter we = new WsdlExporter();

            we.ExportContract(ContractDescription.GetContract(typeof(IFoo1)));

            MetadataSet ms = we.GetGeneratedMetadata();

            Assert.AreEqual(5, ms.MetadataSections.Count);
        }
コード例 #10
0
        public static MetadataSet BasicHttp()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, new BasicHttpBinding(), new EndpointAddress(HttpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #11
0
        public void Ctor1()
        {
            WsdlExporter we = new WsdlExporter();

            Assert.IsNotNull(we.GetGeneratedMetadata());
            Assert.IsNotNull(we.GeneratedWsdlDocuments, "#c1");
            Assert.AreEqual(0, we.GeneratedWsdlDocuments.Count, "#c2");

            Assert.IsNotNull(we.GeneratedXmlSchemas, "#c3");
            Assert.AreEqual(0, we.GeneratedXmlSchemas.Count, "#c4");
        }
コード例 #12
0
        public void ExportContract1()
        {
            WsdlExporter we = new WsdlExporter();

            we.ExportContract(ContractDescription.GetContract(typeof(IEchoService)));

            MetadataSet ms = we.GetGeneratedMetadata();

            Assert.AreEqual(5, ms.MetadataSections.Count);

            CheckContract_IEchoService(ms, "ExportContract1");
        }
コード例 #13
0
        public static MetadataSet NetTcp_Operation()
        {
            var exporter = new WsdlExporter();

            var cd = ContractDescription.GetContract(typeof(IMyContract));

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, new NetTcpBinding(SecurityMode.None, false),
                                        new EndpointAddress(NetTcpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #14
0
        public static MetadataSet NetTcp_TransportWithMessageCredential()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, new NetTcpBinding(SecurityMode.TransportWithMessageCredential, false),
                                        new EndpointAddress(NetTcpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #15
0
        public static MetadataSet NetTcp_ReliableSession()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new NetTcpBinding(SecurityMode.None, true);

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(NetTcpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #16
0
        public static MetadataSet BasicHttp_Operation()
        {
            var exporter = new WsdlExporter();

            var cd = ContractDescription.GetContract(typeof(IMyContract));

            var binding = new BasicHttpBinding();

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #17
0
        public static MetadataSet BasicHttps_TransportWithMessageCredential()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new BasicHttpsBinding(BasicHttpsSecurityMode.TransportWithMessageCredential);

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpsUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #18
0
ファイル: MetadataSamples.cs プロジェクト: vernon016/mono
        public static MetadataSet NetTcp_MessageSecurity()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, new NetTcpBinding(SecurityMode.Message, false),
                                        new EndpointAddress(NetTcpUri)));

            var doc = exporter.GetGeneratedMetadata();

            return(doc);
        }
コード例 #19
0
        public static MetadataSet BasicHttp_NtlmAuth()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #20
0
        public static MetadataSet BasicHttp_TransportSecurity()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new BasicHttpBinding();

            binding.Security.Mode = BasicHttpSecurityMode.Transport;

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #21
0
        public static MetadataSet NetTcp_TransferMode()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new NetTcpBinding(SecurityMode.None, false);

            binding.TransferMode = TransferMode.Streamed;

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(NetTcpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #22
0
        public static MetadataSet BasicHttps_Certificate()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new BasicHttpsBinding();

            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpsUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #23
0
        public static MetadataSet BasicHttp_MessageSecurity()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new BasicHttpBinding();

            binding.Security.Mode = BasicHttpSecurityMode.Message;
            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpUri)));

            return(exporter.GetGeneratedMetadata());
        }
コード例 #24
0
ファイル: MetadataSamples.cs プロジェクト: vernon016/mono
        public static MetadataSet BasicHttp_Mtom()
        {
            var exporter = new WsdlExporter();

            var cd = new ContractDescription("MyContract");

            var binding = new BasicHttpBinding();

            binding.MessageEncoding = WSMessageEncoding.Mtom;

            exporter.ExportEndpoint(new ServiceEndpoint(
                                        cd, binding, new EndpointAddress(HttpUri)));

            var doc = exporter.GetGeneratedMetadata();

            return(doc);
        }
コード例 #25
0
ファイル: Program.cs プロジェクト: huoxudong125/WCF-Demo
        static void Main(string[] args)
        {
            ContractDescription contract    = ContractDescription.GetContract(typeof(IOrderService));
            EndpointAddress     address1    = new EndpointAddress("http://127.0.0.1/orderservice");
            EndpointAddress     address2    = new EndpointAddress("net.tcp://127.0.0.1/orderservice");
            ServiceEndpoint     endpoint1   = new ServiceEndpoint(contract, new WS2007HttpBinding(), address1);
            ServiceEndpoint     endpoint2   = new ServiceEndpoint(contract, new NetTcpBinding(), address2);
            XmlQualifiedName    serviceName = new XmlQualifiedName("OrderService", "http://www.artech.com/services/");
            WsdlExporter        exporter    = new WsdlExporter();

            exporter.ExportEndpoints(new ServiceEndpoint[] { endpoint1, endpoint2 }, serviceName);
            MetadataSet metadata = exporter.GetGeneratedMetadata();

            using (XmlWriter writer = new XmlTextWriter("metadata.xml", Encoding.UTF8))
            {
                metadata.WriteTo(writer);
            }
            Process.Start("metadata.xml");
        }
コード例 #26
0
ファイル: Program.cs プロジェクト: liuhonglei/WCFStudy
        static void Main(string[] args)
        {
            //MetadataSection metadataSection = new MetadataSection();
            //MetadataLocation metadataLocation = new MetadataLocation();
            //WsdlExporter wsdlExporter = new WsdlExporter();
            ContractDescription contract         = ContractDescription.GetContract(typeof(IOrderService));
            EndpointAddress     endpointAddress1 = new EndpointAddress("http://127.0.0.1/orderservice");
            EndpointAddress     endpointAddress2 = new EndpointAddress("net.tcp://127.0.0.1/orderservice");
            ServiceEndpoint     endpoint1        = new ServiceEndpoint(contract, new WSHttpBinding(), endpointAddress1);
            ServiceEndpoint     endpoint2        = new ServiceEndpoint(contract, new NetTcpBinding(), endpointAddress2);
            XmlQualifiedName    serviceName      = new XmlQualifiedName("OrderService", "http://www.lhl.com");
            WsdlExporter        wsdlExporter     = new WsdlExporter();

            wsdlExporter.ExportEndpoints(new ServiceEndpoint[] { endpoint1, endpoint2 }, serviceName);
            MetadataSet metadata = wsdlExporter.GetGeneratedMetadata();

            using (XmlWriter writer = new XmlTextWriter("metadata.xml", Encoding.UTF8)) {
                metadata.WriteTo(writer);
            }
        }
コード例 #27
0
        private static void ExportMetadata(ServiceEndpoint endpoint, EndpointDiscoveryBehavior discovery)
        {
            var exporter = new WsdlExporter();

            exporter.ExportEndpoint(endpoint);
            var metadata = exporter.GetGeneratedMetadata();

            var document = new XDocument();

            using (var xmlWriter = document.CreateWriter())
            {
                xmlWriter.WriteStartElement(WcfConstants.EndpointMetadata.LocalName,
                                            WcfConstants.EndpointMetadata.Namespace.NamespaceName);
                metadata.WriteTo(xmlWriter);
                xmlWriter.WriteEndElement();
                xmlWriter.Flush();
            }

            discovery.Extensions.Add(document.Root);
        }
コード例 #28
0
        public void ExportEndpointTest5()
        {
            WsdlExporter we = new WsdlExporter();

            ServiceEndpoint se = new ServiceEndpoint(ContractDescription.GetContract(typeof(IEchoService)));

            se.Binding = new BasicHttpBinding();
            se.Address = new EndpointAddress("http://localhost:8080");

            we.ExportEndpoint(se);

            MetadataSet ms = we.GetGeneratedMetadata();

            Assert.AreEqual(6, ms.MetadataSections.Count);
            WSServiceDescription wsd = GetServiceDescription(ms, "http://tempuri.org/", "ExportEndpointTest5#1");

            SoapBinding soapBinding = (SoapBinding)wsd.Bindings [0].Extensions [0];

            Assert.AreEqual(SoapBindingStyle.Document, soapBinding.Style, "soapBinding.Style");
            Assert.AreEqual(SoapBinding.HttpTransport, soapBinding.Transport, "soapBinding.Transport");
        }
コード例 #29
0
        private void comboBoxContracts_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (sender is ComboBox && (sender as ComboBox).Tag != null && !string.IsNullOrEmpty(this.comboBoxContracts.Text))
                {
                    Assembly asm = (sender as ComboBox).Tag as Assembly;

                    WsdlExporter exporter = new WsdlExporter();

                    // generate contract from the clr type
                    ContractDescription contract = ContractDescription.GetContract(asm.GetType(this.comboBoxContracts.Text));

                    // dummy endpoint
                    exporter.ExportEndpoint(new ServiceEndpoint(contract, new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost")));

                    // generate metadata
                    MetadataSet set = exporter.GetGeneratedMetadata();
                    if (set != null)
                    {
                        // show in the notepad
                        StringBuilder sb = new StringBuilder();
                        set.WriteTo(XmlWriter.Create(sb));
                        this.xmlNotepadPanelControl1.XmlNotepadForm.LoadXmlDocument(sb.ToString());
                    }
                }
                else
                {
                    this.xmlNotepadPanelControl1.XmlNotepadForm.ClearXmlDocument();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(MetadataHelper.ErrorMessage(ex), "Loading resource", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #30
0
        //FIXME: One check not working, BeginGetResult
        public void ExportMexContract()
        {
            WsdlExporter        we = new WsdlExporter();
            ContractDescription cd = ContractDescription.GetContract(typeof(IMetadataExchange));

            we.ExportContract(cd);

            MetadataSet ms = we.GetGeneratedMetadata();

            WSServiceDescription sd = GetServiceDescription(ms, "http://schemas.microsoft.com/2006/04/mex", "ExportMexContract");

            CheckMessage(sd, "IMetadataExchange_Get_InputMessage", "request", "http://schemas.microsoft.com/Message:MessageBody", true, "#exc0");
            CheckMessage(sd, "IMetadataExchange_Get_OutputMessage", "GetResult", "http://schemas.microsoft.com/Message:MessageBody", true, "#exc1");

            //PortType
            PortType port_type = sd.PortTypes ["IMetadataExchange"];

            Assert.IsNotNull(port_type, "#exc2, PortType named IMetadataExchange not found.");

            Assert.AreEqual(1, port_type.Operations.Count, "#exc3");
            Operation op = port_type.Operations [0];

            Assert.AreEqual("Get", op.Name, "#exc4");

            Assert.AreEqual(2, op.Messages.Count, "#exc5");
            CheckOperationMessage(op.Messages [0], "http://schemas.microsoft.com/2006/04/mex:IMetadataExchange_Get_InputMessage",
                                  typeof(OperationInput), "http://schemas.xmlsoap.org/ws/2004/09/transfer/Get");

            CheckOperationMessage(op.Messages [1], "http://schemas.microsoft.com/2006/04/mex:IMetadataExchange_Get_OutputMessage",
                                  typeof(OperationOutput), "http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse");

            CheckSpecialMessage(ms, "#exc6");

            Assert.AreEqual(1, we.GeneratedWsdlDocuments.Count, "GeneratedWsdlDocuments.Count");
            Assert.AreEqual(1, we.GeneratedXmlSchemas.Count, "GeneratedXmlSchemas.Count");
        }