Пример #1
0
        /// <inheritdoc />
        public override async ValueTask <T> DeserializeFromRequest <T>(RequestExecutionContext context)
        {
            var fileReader = new FileBufferingReadStream(context.HttpContext.Request.Body, _memoryThreshold);

            context.HttpContext.Response.RegisterForDispose(fileReader);

            try
            {
                await fileReader.DrainAsync(context.HttpContext.RequestAborted);

                fileReader.Seek(0L, SeekOrigin.Begin);

                using var textReader = new StreamReader(fileReader);

                using var xmlReader = new XmlTextReader(textReader);

                var serializer = GetSerializer(typeof(T));

                return((T)serializer.Deserialize(xmlReader));
            }
            finally
            {
                await fileReader.DisposeAsync();
            }
        }