Формирование определения отчета VS 2008 Reporting Services - PullRequest
1 голос
/ 05 января 2010

Я использую VS 2008 для создания определения отчета служб Reporting Services. Проблема в том, что всякий раз, когда я пытаюсь загрузить определение отчета из потока, я получаю сообщение об ошибке.

У меня есть следующий код:

var loaded = XDocument.Load(filePath);
LocalReport ret = new LocalReport();
using (var stream = new MemoryStream())
{
    var writer = new StreamWriter(stream);
    loaded.Save(writer);
    var ret = new LocalReport();
    ret.LoadReportDefinition(stream);

    var r= ret.GetParameters();
}

Когда выполняется последняя строка, выдается исключение LocalProcessingException со следующим текстом:

{"The report definition is not valid.  Details: O elemento raiz está em falta."}

Подробности переводятся как "отсутствует корневой элемент".

Что может быть не так?

Редактировать: XML-определение является правильным. Проблема лежит где-то после загрузки определения.

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Вы должны сбросить поток обратно в положение 0, прежде чем читать его снова. В противном случае LoadReportDefinition начнет читать с конца потока.

var loaded = XDocument.Load(filePath);
LocalReport ret = new LocalReport();
using (var stream = new MemoryStream())
{
    var writer = new StreamWriter(stream);
    loaded.Save(writer);
    writer.Close();
    writer.Position = 0;
    var ret = new LocalReport();
    ret.LoadReportDefinition(stream);

    var r= ret.GetParameters();
}

См. CreateMemoryStream () на этой странице

0 голосов
/ 06 января 2010

Вы пытались сохранить MemoryStream в отдельный файл и сравнить его с оригиналом?

...