Esempio n. 1
0
        static void Main(string[] args)
        {
            MetadataSet metadata = null;

            using (ChannelFactory <IMetadataExchange> channelFactory = new ChannelFactory <IMetadataExchange>(MetadataExchangeBindings.CreateMexHttpBinding(), new EndpointAddress("http://127.0.0.1:9999/calculatorservice/mex")))
            {
                IMetadataExchange proxy = channelFactory.CreateChannel();
                using (proxy as IDisposable)
                {
                    string  action  = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Get";
                    Message request = Message.CreateMessage(MessageVersion.Default, action);
                    metadata = proxy.Get(request).GetBody <MetadataSet>();
                }
            }
            using (XmlWriter writer = new XmlTextWriter("metadata.xml", Encoding.UTF8))
            {
                metadata.WriteTo(writer);
            }
            Process.Start("metadata.xml");
        }
                internal AsyncMetadataReferenceRetriever(IMetadataExchange metadataClient, MessageVersion messageVersion, TimeoutHelper timeoutHelper, AsyncCallback callback, object state)
                    : base(callback, state)
                {

                    message = MetadataReferenceRetriever.CreateGetMessage(messageVersion);
                    ((IClientChannel)metadataClient).OperationTimeout = timeoutHelper.RemainingTime();
                    IAsyncResult result = metadataClient.BeginGet(message, Fx.ThunkCallback(new AsyncCallback(this.RequestCallback)), metadataClient);

                    if (result.CompletedSynchronously)
                    {
                        HandleResult(result);

                        this.Complete(true);
                    }
                }