Ejemplo n.º 1
0
        internal XmlReader CreateReader(string inputUri, XmlParserContext inputContext)
        {
            XmlReader reader;

            if (inputUri == null)
            {
                throw new ArgumentNullException("inputUri");
            }
            if (inputUri.Length == 0)
            {
                throw new ArgumentException(Res.GetString("XmlConvert_BadUri"), "inputUri");
            }
            System.Xml.XmlResolver xmlResolver = this.GetXmlResolver();
            if (xmlResolver == null)
            {
                xmlResolver = this.CreateDefaultResolver();
            }
            Uri    absoluteUri = xmlResolver.ResolveUri(null, inputUri);
            Stream input       = (Stream)xmlResolver.GetEntity(absoluteUri, string.Empty, typeof(Stream));

            if (input == null)
            {
                throw new XmlException("Xml_CannotResolveUrl", inputUri);
            }
            XmlReaderSettings settings = this;

            if (!settings.CloseInput)
            {
                settings            = settings.Clone();
                settings.CloseInput = true;
            }
            try
            {
                reader = settings.CreateReader(input, absoluteUri, null, inputContext);
            }
            catch
            {
                input.Close();
                throw;
            }
            return(reader);
        }
Ejemplo n.º 2
0
        private object GetEntityForCache(string role, Type ofObjectToReturn, Uri uri)
        {
            var entity = _innerResolver.GetEntity(uri, role, ofObjectToReturn);

            var fileStream = entity as FileStream;

            if (fileStream == null)
            {
                return(entity);
            }

            using (var memStream = new MemoryStream())
            {
                using (fileStream)
                {
                    fileStream.CopyTo(memStream);
                }

                return(memStream.ToArray());
            }
        }