GetReaderAtMetadata() 공개 메소드

public GetReaderAtMetadata ( ) : XmlDictionaryReader
리턴 XmlDictionaryReader
예제 #1
0
        public XmlDictionaryReader GetReaderAtMetadata()
        {
            if (!_hasMetadata)
            {
                return(_epr == null ? null : _epr.GetReaderAtMetadata());
            }

            if (_metadataBuffer == null)
            {
                return(null);
            }

            XmlDictionaryReader reader = _metadataBuffer.GetReader(0);

            reader.MoveToContent();
            Fx.Assert(reader.Name == EndpointAddress.DummyName, "EndpointAddressBuilder: Expected dummy element not found");
            reader.Read(); // consume the wrapper element
            return(reader);
        }
        public virtual bool TryGetIssuer(XmlElement assertion, out EndpointAddress issuer, out EndpointAddress issuerMetadata)
        {
            bool result = true;
            issuer = null;
            issuerMetadata = null;

            foreach (XmlNode node in assertion.ChildNodes)
            {
                if (node is XmlElement && IsWsspAssertion((XmlElement)node, IssuerName))
                {
                    try
                    {
                        issuer = EndpointAddress.ReadFrom(XmlDictionaryReader.CreateDictionaryReader(new XmlNodeReader(node)));
                        XmlDictionaryReader metadataReader = issuer.GetReaderAtMetadata();
                        if (metadataReader != null)
                        {
                            while (metadataReader.MoveToContent() == XmlNodeType.Element)
                            {
                                if (metadataReader.LocalName == MetadataStrings.MetadataExchangeStrings.Metadata
                                    && metadataReader.NamespaceURI == MetadataStrings.MetadataExchangeStrings.Namespace)
                                {
                                    MetadataSet metadataSet = MetadataSet.ReadFrom(metadataReader);
                                    foreach (MetadataSection section in metadataSet.MetadataSections)
                                    {
                                        if (section.Metadata is MetadataReference)
                                        {
                                            issuerMetadata = ((MetadataReference)section.Metadata).Address;
                                        }
                                    }

                                    break;
                                }
                                else
                                {
                                    metadataReader.Skip();
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        if (Fx.IsFatal(e))
                            throw;
                        if (e is NullReferenceException)
                            throw;
                        result = false;
                    }
                    break;
                }
            }

            return result;
        }
 public virtual bool TryGetIssuer(XmlElement assertion, out EndpointAddress issuer, out EndpointAddress issuerMetadata)
 {
     bool flag = true;
     issuer = null;
     issuerMetadata = null;
     foreach (System.Xml.XmlNode node in assertion.ChildNodes)
     {
         if ((node is XmlElement) && this.IsWsspAssertion((XmlElement) node, "Issuer"))
         {
             try
             {
                 issuer = EndpointAddress.ReadFrom(XmlDictionaryReader.CreateDictionaryReader(new XmlNodeReader(node)));
                 XmlDictionaryReader readerAtMetadata = issuer.GetReaderAtMetadata();
                 if (readerAtMetadata != null)
                 {
                     while (readerAtMetadata.MoveToContent() == XmlNodeType.Element)
                     {
                         if ((readerAtMetadata.Name == "Metadata") && (readerAtMetadata.NamespaceURI == "http://schemas.xmlsoap.org/ws/2004/09/mex"))
                         {
                             foreach (MetadataSection section in MetadataSet.ReadFrom(readerAtMetadata).MetadataSections)
                             {
                                 if (section.Metadata is MetadataReference)
                                 {
                                     issuerMetadata = ((MetadataReference) section.Metadata).Address;
                                 }
                             }
                             return flag;
                         }
                         readerAtMetadata.Skip();
                     }
                 }
                 return flag;
             }
             catch (Exception exception)
             {
                 if (Fx.IsFatal(exception))
                 {
                     throw;
                 }
                 if (exception is NullReferenceException)
                 {
                     throw;
                 }
                 return false;
             }
         }
     }
     return flag;
 }