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; }