public FactoryServiceHelper(Uri url)
        {
            adresse = url;
            Uri mexAddress = new Uri(adresse.ToString() + "?wsdl");
            //for MEX endpoints use a MEX address and a mexMode of .MetadataExchange
            MetadataExchangeClientMode mexMode   = MetadataExchangeClientMode.HttpGet;
            MetadataExchangeClient     mexClient = new MetadataExchangeClient(mexAddress, mexMode);

            mexClient.ResolveMetadataReferences = true;
            serviceMetadata = mexClient.GetMetadata();

            WsdlImporter importer = new WsdlImporter(serviceMetadata);

            System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();

            BasicHttpBinding Binding = new BasicHttpBinding();
            EndpointAddress  address = new EndpointAddress(adresse.ToString());

            ChannelFactory <IRequestChannel> factory =
                new ChannelFactory <IRequestChannel>(Binding, address);

            serviceChannel  = factory.CreateChannel();
            serviceInfo     = contracts[0];
            targetNamespace = serviceInfo.Namespace;
            serviceName     = serviceInfo.Name;
        }
        static ServiceEndpointCollection QueryMexEndpoint(string mexAddress, Binding binding, string issuer, string secret)
        {
            Binding extendedBinding = null;

            if (binding is NetTcpRelayBinding)
            {
                NetTcpRelayBinding actualBinding = binding as NetTcpRelayBinding;
                actualBinding.MaxReceivedMessageSize *= MessageSizeMultiplier;
                extendedBinding = actualBinding;
            }
            if (binding is WS2007HttpRelayBinding)
            {
                WS2007HttpRelayBinding actualBinding = binding as WS2007HttpRelayBinding;
                actualBinding.MaxReceivedMessageSize *= MessageSizeMultiplier;
                extendedBinding = actualBinding;
            }

            MetadataExchangeClient mexClient = new MetadataExchangeClient(extendedBinding);

            mexClient.SetServiceBusCredentials(issuer, secret);
            MetadataSet      metadata = mexClient.GetMetadata(new EndpointAddress(mexAddress));
            MetadataImporter importer = new WsdlImporter(metadata);

            return(importer.ImportAllEndpoints());
        }
        protected bool RetrieveMetadata(ProxyWrapper proxywrapper)
        {
            var         success     = true;
            MetadataSet metadataset = null;
            bool        isInbadlist = null != _badProxyAddressList.FirstOrDefault <ProxyWrapper>(w => w.EndPoint.address == proxywrapper.EndPoint.address);

            if (proxywrapper.Proxy != null)
            {
                try
                {
                    var address   = string.Format(@"{0}?wsdl", proxywrapper.EndPoint.address);
                    var mexClient = new MetadataExchangeClient(new Uri(address), MetadataExchangeClientMode.HttpGet);
                    metadataset = mexClient.GetMetadata();
                }
                catch (Exception e)
                {
                    #if LOG // TODO : Remove when .NET 4.0 log manager is used
                    _logger.Warning(e.Message);
                    #endif
                    success = false;
                }
            }
            if (null != metadataset)
            {
                var sb = new StringBuilder();
                foreach (var section in metadataset.MetadataSections)
                {
                    sb.AppendLine(string.Format(@"{0}{1}", section.Identifier.ToString(), Environment.NewLine));
                }
                VerifyProxyResults = sb.ToString();
            }

            return(success);
        }
Exemple #4
0
// </Snippet0>

        static void CallFromMain(string[] args)
        {
            //<snippet10>
            // make endpoint address
            EndpointAddress mexAddress = new EndpointAddress("http://localhost:8080/ServiceMetadata/mex");

            // Download all metadata. The policy importer runs automatically.p
            ServiceEndpointCollection endpoints
                = MetadataResolver.Resolve(
                      typeof(IStatefulService),
                      new EndpointAddress("http://localhost:8080/StatefulService/mex")
                      );
            //</snippet10>

            MetadataExchangeClient mexClient =
                new MetadataExchangeClient(mexAddress);

            mexClient.ResolveMetadataReferences = true;

            MetadataSet metaDocs = mexClient.GetMetadata();

            WsdlImporter importer = new WsdlImporter(metaDocs);
            // This is not neccesary for this snippet.
            // PolicyConversionContext myPolicyConversionContext = new PolicyConversionContext ();
            //ImportPolicy(importer, myPolicyConversionContext);
        }
Exemple #5
0
        /// <summary>
        /// Find the wsdl importer
        /// </summary>
        /// <param name="wsdlUri">The wsdl uri</param>
        /// <returns>A wsdl importer</returns>
        private WsdlImporter GetWsdlImporter(Uri wsdlUri)
        {
            _logger.WriteDebug($"GetWsdlImporter wsdlUri[{wsdlUri}]");
            WSHttpBinding mexBinding = null;

            if (wsdlUri.Scheme == Uri.UriSchemeHttp)
            {
                mexBinding = (WSHttpBinding)MetadataExchangeBindings.CreateMexHttpBinding();
            }
            else
            {
                mexBinding = (WSHttpBinding)MetadataExchangeBindings.CreateMexHttpsBinding();
            }
            mexBinding.MaxReceivedMessageSize = Int32.MaxValue;
            mexBinding.MaxBufferPoolSize      = Int32.MaxValue;
            mexBinding.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
            mexBinding.ReaderQuotas.MaxNameTableCharCount  = Int32.MaxValue;
            mexBinding.ReaderQuotas.MaxArrayLength         = Int32.MaxValue;
            mexBinding.ReaderQuotas.MaxBytesPerRead        = Int32.MaxValue;
            mexBinding.ReaderQuotas.MaxDepth = 64;

            var mexClient = new MetadataExchangeClient(mexBinding);

            mexClient.MaximumResolvedReferences = int.MaxValue;

            var metadataSet = mexClient.GetMetadata(wsdlUri, MetadataExchangeClientMode.HttpGet);

            return(new WsdlImporter(metadataSet));
        }
        /// <summary>
        /// Try to create MetadataExchangeClient for GttpGet exchange mode
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        private bool TryCreateMetadataExchangeClientForHttpGet(out MetadataExchangeClient client)
        {
            var            address        = new Uri(mAddress);
            var            GetAddress     = CreateHttpGetAddress(mAddress);
            BindingElement bindingElement = null;

            if (address.Scheme == Uri.UriSchemeHttp)
            {
                var httpTransport = new HttpTransportBindingElement();
                httpTransport.MaxReceivedMessageSize *= ReceivedMessageSizMultiplier;
                bindingElement = httpTransport;
            }

            if (address.Scheme == Uri.UriSchemeHttps)
            {
                var httpsTransport = new HttpsTransportBindingElement();
                httpsTransport.MaxReceivedMessageSize *= ReceivedMessageSizMultiplier;
                bindingElement = httpsTransport;
            }


            try
            {
                var binding = new CustomBinding(bindingElement);
                client = new MetadataExchangeClient(binding);
                return(true);
            }
            catch
            {
                client = null;
                return(false);
            }
        }
        private MetadataSet GetServiceMetadata(string wsdlUrl, MetadataExchangeClientMode clientMode, System.Net.NetworkCredential mexNetworkCredentials)
        {
            MetadataSet metadata = null;
            Binding     mexBinding;

            if (clientMode == MetadataExchangeClientMode.HttpGet)
            {
                mexBinding = new BasicHttpBinding {
                    MaxReceivedMessageSize = 50000000L
                };
            }
            else
            {
                mexBinding = new WSHttpBinding(SecurityMode.None)
                {
                    MaxReceivedMessageSize = 50000000L
                };
            }

            var mexClient = new MetadataExchangeClient(mexBinding)
            {
                ResolveMetadataReferences = true,
                MaximumResolvedReferences = 200,
                HttpCredentials           = mexNetworkCredentials
            };

            try
            {
                metadata = mexClient.GetMetadata(new Uri(wsdlUrl), clientMode);
            } catch (Exception ex) {
                Console.WriteLine(String.Format("Error: {0}", ex.Message));
            }

            return(metadata);
        }
        MetadataSet ResolveWithWSMex(string url)
        {
            MetadataSet metadata = null;

            try
            {
                MetadataExchangeClient client = new MetadataExchangeClient(new EndpointAddress(url));

                Console.WriteLine("\nAttempting to download metadata from {0} using WS-MetadataExchange..", url);
                metadata = client.GetMetadata();
            }
            catch (InvalidOperationException e)
            {
                //MetadataExchangeClient wraps exceptions, thrown while
                //fetching the metadata, in an InvalidOperationException
                string msg;
                if (e.InnerException == null)
                {
                    msg = e.Message;
                }
                else
                {
                    msg = e.InnerException.ToString();
                }

                Console.WriteLine("WS-MetadataExchange query failed for the url '{0}' with exception :\n {1}",
                                  url, msg);
            }

            return(metadata);
        }
Exemple #9
0
        public void CanPubishMEXEndpointsUsingCustomAddress()
        {
            using (new WindsorContainer()
                   .AddFacility <WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
                   .Register(Component.For <Operations>()
                             .DependsOn(new { number = 42 })
                             .AsWcfService(new DefaultServiceModel()
                                           .AddBaseAddresses(
                                               "net.tcp://localhost/Operations",
                                               "http://localhost:27198/UsingWindsor.svc")
                                           .AddEndpoints(
                                               WcfEndpoint.ForContract <IOperations>()
                                               .BoundTo(new NetTcpBinding {
                PortSharingEnabled = true
            })
                                               )
                                           .PublishMetadata(mex => mex.EnableHttpGet().AtAddress("tellMeAboutYourSelf"))
                                           )
                             ))
            {
                var tcpMextClient = new MetadataExchangeClient(new EndpointAddress("net.tcp://localhost/Operations/tellMeAboutYourSelf"));
                var tcpMetadata   = tcpMextClient.GetMetadata();
                Assert.IsNotNull(tcpMetadata);

                var httpMextClient = new MetadataExchangeClient(new EndpointAddress("http://localhost:27198/UsingWindsor.svc?wsdl"));
                var httpMetadata   = httpMextClient.GetMetadata();
                Assert.IsNotNull(httpMetadata);
            }
        }
Exemple #10
0
        static void ImportAllContracts()
        {
            EndpointAddress        mexAddress = new EndpointAddress(uri + "/mex");
            MetadataExchangeClient mexClient  = new MetadataExchangeClient(mexAddress);

            // Retrieve the metadata for all endpoints using metadata exchange protocol (mex).
            MetadataSet metadataSet = mexClient.GetMetadata();

            //Convert the metadata into endpoints
            WsdlImporter    importer        = new WsdlImporter(metadataSet);
            CodeCompileUnit codeCompileUnit = new CodeCompileUnit();

            var contracts = importer.ImportAllContracts();
            ServiceContractGenerator generator = new ServiceContractGenerator(codeCompileUnit);

            foreach (var item in contracts)
            {
                generator.GenerateServiceContractType(item);
            }
            if (generator.Errors.Count != 0)
            {
                throw new Exception("error");
            }

            CompilerCSharpCode(generator);
            var assembly = CompilerAssembly(codeCompileUnit);

            CompilerNewServiceContract(assembly, importer);
        }
Exemple #11
0
        static void ImportAllEndpoints()
        {
            EndpointAddress        mexAddress = new EndpointAddress(uri + "/mex");
            MetadataExchangeClient mexClient  = new MetadataExchangeClient(mexAddress);

            // Retrieve the metadata for all endpoints using metadata exchange protocol (mex).
            MetadataSet metadataSet = mexClient.GetMetadata();

            //Convert the metadata into endpoints
            WsdlImporter importer = new WsdlImporter(metadataSet);

            #region endpoints
            ServiceEndpointCollection endpoints = importer.ImportAllEndpoints();

            ContractDescription contract = ContractDescription.GetContract(typeof(ICalculator));
            // Communicate with each endpoint that supports the ICalculator contract.
            foreach (ServiceEndpoint ep in endpoints)
            {
                if (ep.Contract.Namespace.Equals(contract.Namespace) && ep.Contract.Name.Equals(contract.Name))
                {
                    // Create a client using the endpoint address and binding.
                    var client = new ChannelFactory <CalculatorClientChannel>(ep.Binding, new EndpointAddress(ep.Address.Uri)).CreateChannel();

                    // call operations
                    Console.WriteLine(client.Add(2, 3));

                    //Closing the client gracefully closes the connection and cleans up resources
                    client.Close();
                }
            }
            #endregion
        }
Exemple #12
0
        static void GenerateVBCodeForService(Uri metadataAddress, string outputFile)
        {
            MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress, MetadataExchangeClientMode.HttpGet);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaDocs = mexClient.GetMetadata();

            WsdlImporter             importer  = new WsdlImporter(metaDocs);
            ServiceContractGenerator generator = new ServiceContractGenerator();

            System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();
            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }
            if (generator.Errors.Count != 0)
            {
                throw new ApplicationException("There were errors during code compilation.");
            }

            // Write the code dom.
            System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider    codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("VB");
            System.CodeDom.Compiler.IndentedTextWriter textWriter      = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
            textWriter.Close();
        }
Exemple #13
0
        private void IsServiceAlive()
        {
            while (true)
            {
                if (_token.IsCancellationRequested)
                {
                    Environment.Exit(1);
                }

                try
                {
                    MetadataExchangeClient mexClient = new MetadataExchangeClient(new Uri("http://localhost/ComponentsReturn"), MetadataExchangeClientMode.HttpGet);
                    MetadataSet            metadata  = mexClient.GetMetadata();
                    this.Set(() => this.Icon          = BitmapFrame.Create(iconUriStart));
                    BtOpen.Set(() => BtOpen.IsEnabled = true);
                    BtSave.Set(() => BtSave.IsEnabled = true);
                }
                catch (Exception ex)
                {
                    BtOpen.Set(() => BtOpen.IsEnabled = false);
                    BtSave.Set(() => BtSave.IsEnabled = false);
                    this.Set(() => this.Icon          = BitmapFrame.Create(iconUriStop));
                }
            }
        }
Exemple #14
0
        private void WSDLImport(string metadataAddress)
        {
            //<snippet9>
            MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet             metaDocs = mexClient.GetMetadata();
            WsdlImporter            importer = new WsdlImporter(metaDocs);
            object                  dataContractImporter;
            XsdDataContractImporter xsdInventoryImporter;

            if (!importer.State.TryGetValue(typeof(XsdDataContractImporter),
                                            out dataContractImporter))
            {
                xsdInventoryImporter = new XsdDataContractImporter();
            }

            xsdInventoryImporter = (XsdDataContractImporter)dataContractImporter;
            xsdInventoryImporter.Options ??= new ImportOptions();
            xsdInventoryImporter.Options.DataContractSurrogate = new InventorySurrogated();
            importer.State.Add(typeof(XsdDataContractImporter), xsdInventoryImporter);

            Collection <ContractDescription> contracts = importer.ImportAllContracts();
            //</snippet9>
        }
        void DiscoverMexMetadata(object sender, DoWorkEventArgs e)
        {
            Uri         url      = (Uri)e.Argument;
            var         client   = new MetadataExchangeClient(url, MetadataExchangeClientMode.MetadataExchange);
            MetadataSet metadata = client.GetMetadata();

            e.Result = new ServiceReferenceDiscoveryEventArgs(metadata);
        }
Exemple #16
0
        public static void SetServiceBusCredentials(this MetadataExchangeClient mexClient, string issuer, string secret)
        {
            Type      type = mexClient.GetType();
            FieldInfo info = type.GetField("factory", BindingFlags.Instance | BindingFlags.NonPublic);
            ChannelFactory <IMetadataExchange> factory = info.GetValue(mexClient) as ChannelFactory <IMetadataExchange>;

            factory.SetServiceBusCredentials(issuer, secret);
        }
Exemple #17
0
        /// <summary>
        /// Queries the mex contracts.
        /// </summary>
        /// <param name="mexAddress">The mex address.</param>
        /// <param name="bindingElement">The binding element.</param>
        /// <returns>IEnumerable{ContractDescription}.</returns>
        static IEnumerable <ContractDescription> QueryMexContracts(string mexAddress, BindingElement bindingElement)
        {
            var binding               = new CustomBinding(bindingElement);
            var mexClient             = new MetadataExchangeClient(binding);
            var metadata              = mexClient.GetMetadata(new EndpointAddress(mexAddress));
            MetadataImporter importer = new WsdlImporter(metadata);

            return(importer.ImportAllContracts());
        }
        private WsdlImporter ImportWSDL(Uri wsdlLoc)
        {
            MetadataExchangeClient mexC = new MetadataExchangeClient(wsdlLoc, MetadataExchangeClientMode.HttpGet);

            mexC.ResolveMetadataReferences = true;
            MetadataSet metaSet = mexC.GetMetadata();

            return(new WsdlImporter(metaSet));
        }
Exemple #19
0
        /// <summary>
        /// Queries the mex endpoint.
        /// </summary>
        /// <param name="mexAddress">The mex address.</param>
        /// <param name="bindingElement">The binding element.</param>
        /// <returns>ServiceEndpointCollection.</returns>
        static ServiceEndpointCollection QueryMexEndpoint(string mexAddress, BindingElement bindingElement)
        {
            var binding               = new CustomBinding(bindingElement);
            var mexClient             = new MetadataExchangeClient(binding);
            var metadata              = mexClient.GetMetadata(new EndpointAddress(mexAddress));
            MetadataImporter importer = new WsdlImporter(metadata);

            return(importer.ImportAllEndpoints());
        }
Exemple #20
0
        ServiceEndpointCollection GetEndpoints(BindingElement bindingElement)
        {
            CustomBinding binding = new CustomBinding(bindingElement);

            MetadataExchangeClient MEXClient = new MetadataExchangeClient(binding);
            MetadataSet            metadata  = MEXClient.GetMetadata(new EndpointAddress(m_MexAddressTextBox.Text));
            MetadataImporter       importer  = new WsdlImporter(metadata);

            return(importer.ImportAllEndpoints());
        }
        public void CheckWsdl()
        {
            var metaTransfer =
                new MetadataExchangeClient(new Uri(Settings.Default.InforoomOnline_Tests_localhost_InforoomOnlineService + "?wsdl"),
                                           MetadataExchangeClientMode.HttpGet);

            metaTransfer.ResolveMetadataReferences = true;
            var otherDocs = metaTransfer.GetMetadata();

            Assert.That(otherDocs.MetadataSections.Count, Is.GreaterThan(0));
        }
Exemple #22
0
        static void Main()
        {
            // Specify the Metadata Exchange binding and its security mode
            WSHttpBinding mexBinding = new WSHttpBinding(SecurityMode.Message);

            mexBinding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;

            // Create a MetadataExchangeClient for retrieving metadata, and set the certificate details
            MetadataExchangeClient mexClient = new MetadataExchangeClient(mexBinding);

            mexClient.SoapCredentials.ClientCertificate.SetCertificate(
                StoreLocation.CurrentUser, StoreName.My,
                X509FindType.FindBySubjectName, "client.com");
            mexClient.SoapCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust;
            mexClient.SoapCredentials.ServiceCertificate.SetDefaultCertificate(
                StoreLocation.CurrentUser, StoreName.TrustedPeople,
                X509FindType.FindBySubjectName, "localhost");

            // The contract we want to fetch metadata for
            Collection <ContractDescription> contracts = new Collection <ContractDescription>();
            ContractDescription contract = ContractDescription.GetContract(typeof(ICalculator));

            contracts.Add(contract);

            // Find endpoints for that contract
            EndpointAddress           mexAddress = new EndpointAddress(ConfigurationManager.AppSettings["mexAddress"]);
            ServiceEndpointCollection endpoints  = MetadataResolver.Resolve(contracts,
                                                                            mexAddress, mexClient);

            // Communicate with each endpoint that supports the ICalculator contract.
            foreach (ServiceEndpoint endpoint in endpoints)
            {
                if (endpoint.Contract.Namespace.Equals(contract.Namespace) && endpoint.Contract.Name.Equals(contract.Name))
                {
                    // Create a channel and set the certificate details to communicate with the Application endpoint
                    ChannelFactory <ICalculator> cf = new ChannelFactory <ICalculator>(endpoint.Binding, endpoint.Address);
                    cf.Credentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My,
                                                                    X509FindType.FindBySubjectName, "client.com");
                    cf.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust;

                    ICalculator channel = cf.CreateChannel();

                    // call operations
                    DoCalculations(channel);

                    ((IChannel)channel).Close();
                    cf.Close();
                }
            }

            Console.WriteLine();
            Console.WriteLine("Press <ENTER> to terminate client.");
            Console.ReadLine();
        }
Exemple #23
0
        private MetadataSet GetMetadata()
        {
            Debug.Assert(string.IsNullOrWhiteSpace(m_mexAddress) == false);

            var mexUri    = new Uri(m_mexAddress);
            var mexClient = new MetadataExchangeClient(mexUri, MetadataExchangeClientMode.MetadataExchange)
            {
                ResolveMetadataReferences = true
            };

            return(mexClient.GetMetadata());
        }
Exemple #24
0
        static void Main()
        {
            string outputFile = "c:\\temp\\test";


            //<Snippet0>
            EndpointAddress mexAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/service/mex");
            //</Snippet0>

            //<Snippet1>
            MetadataExchangeClient mexClient = new MetadataExchangeClient(mexAddress);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaSet = mexClient.GetMetadata();
            //</Snippet1>

            //<Snippet2>
            WsdlImporter importer = new WsdlImporter(metaSet);

            System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();
            //</Snippet2>

            //<Snippet3>
            ServiceContractGenerator generator = new ServiceContractGenerator();

            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }

            if (generator.Errors.Count != 0)
            {
                throw new Exception("There were errors during code compilation.");
            }
            //</Snippet3>


            // Write the code dom
            //<Snippet4>
            System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider    codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
            System.CodeDom.Compiler.IndentedTextWriter textWriter      = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
            textWriter.Close();
            //</Snippet4>


            Console.WriteLine();
            Console.WriteLine("Press <ENTER> to terminate client.");
            Console.ReadLine();
        }
        private IEnumerable <ContractDescription> GetContractsDescriptions()
        {
            var mexClient = new MetadataExchangeClient(_uri, MetadataExchangeClientMode.HttpGet)
            {
                ResolveMetadataReferences = true
            };

            var metaDataSet = mexClient.GetMetadata();

            var wdslImporter = new WsdlImporter(metaDataSet);

            return(wdslImporter.ImportAllContracts());
        }
Exemple #26
0
 private MetadataSet DiscoverMetadata(Uri address)
 {
     if (UriSchemeSupportsDisco(address) &&
         !IsMexUri(address))
     {
         return(GetMetadataWithDiscovery(address));
     }
     else
     {
         MetadataExchangeClient metadataTransferClient =
             new MetadataExchangeClient(address, MetadataExchangeClientMode.MetadataExchange);
         return(metadataTransferClient.GetMetadata());
     }
 }
Exemple #27
0
        static ServiceEndpointCollection QueryMexEndpoint(string mexAddress, BindingElement bindingElement)
        {
            dynamic element = bindingElement;

            element.MaxReceivedMessageSize *= MessageSizeMultiplier;

            CustomBinding binding = new CustomBinding(element);

            MetadataExchangeClient mexClient = new MetadataExchangeClient(binding);
            MetadataSet            metadata  = mexClient.GetMetadata(new EndpointAddress(mexAddress));
            MetadataImporter       importer  = new WsdlImporter(metadata);

            return(importer.ImportAllEndpoints());
        }
Exemple #28
0
        static void Main(string[] args)
        {
            Uri address = new Uri("http://127.0.0.1:9999/calculatorservice/metadata");
            MetadataExchangeClient metadataExchangeClient = new MetadataExchangeClient(address, MetadataExchangeClientMode.HttpGet);

            metadataExchangeClient.ResolveMetadataReferences = false;
            MetadataSet metadata = metadataExchangeClient.GetMetadata();

            using (XmlWriter writer = new XmlTextWriter("metadata.xml", Encoding.UTF8))
            {
                metadata.WriteTo(writer);
            }
            Process.Start("metadata.xml");
        }
Exemple #29
0
    static void Main(string[] args)
    {
        Uri uri = new Uri("http://10.157.13.69:3336/mex");
        MetadataExchangeClient    client    = new MetadataExchangeClient(uri, MetadataExchangeClientMode.MetadataExchange);
        MetadataSet               metadata  = client.GetMetadata();
        WsdlImporter              importer  = new WsdlImporter(metadata);
        ServiceEndpointCollection endpoints = importer.ImportAllEndpoints();

        //ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(IService), uri, MetadataExchangeClientMode.MetadataExchange);
        foreach (var item in endpoints)
        {
            Console.WriteLine(item.Address.Uri);
        }
    }
        static ServiceEndpointCollection QueryMexEndpoint(string mexAddress, Binding binding, string issuer, string secret)
        {
            dynamic extendedBinding = binding;

            extendedBinding.MaxReceivedMessageSize *= MessageSizeMultiplier;

            MetadataExchangeClient mexClient = new MetadataExchangeClient(extendedBinding);

            mexClient.SetServiceBusCredentials(issuer, secret);
            MetadataSet      metadata = mexClient.GetMetadata(new EndpointAddress(mexAddress));
            MetadataImporter importer = new WsdlImporter(metadata);

            return(importer.ImportAllEndpoints());
        }