Telerik Report packer Каждый раз разные результаты - PullRequest
0 голосов
/ 24 мая 2019

Используется пространство имен Telerik.Reporting.ReportPacker

Ввод XML никогда не изменяется, следующая функция используется для преобразования XML в объект Telerik, а затем в байтовый массив.

Следующее senario ведет себя как ожидалось:

 var packing1 = GetTelerikReportFromXML(report.ReportXml);
 var sha1 = FileHasher.Hash(packing1);
 var sha1Try2 = FileHasher.Hash(packing1);

Оба хэша SHA1 одинаковы.

Но если вы перезапустите приложение, вы получите разные результаты для вывода ReportPacker (байтовые массивы имеют одинаковый размер, но разные).

Сравнивая массивы байтов, кажется, что разница всегда составляет 8 или 12 байтов.

Кто-нибудь знает, как заставить ReportPacker каждый раз выводить один и тот же вывод?

Я подтвердил, что входной XML никогда не меняется. Так что это не хеширование или ввод

static byte[] GetTelerikReportFromXML(string xmlContent)
{
                var settings = new System.Xml.XmlReaderSettings { IgnoreWhitespace = true };
                Report telerikReport;
                using (var xmlReader = XmlReader.Create(new StringReader(xmlContent), settings))
                {
                    var xmlSerializer = new ReportXmlSerializer();
                    telerikReport = (Report)xmlSerializer.Deserialize(xmlReader);
                    using (var ms = new MemoryStream())
                    {
                        var reportPacker = new ReportPackager();
                        reportPacker.Package(telerikReport, ms);
                        return  ms.ToArray();
                    }
                }
}
...