2010-01-05 107 views
1

我正在使用VS 2008生成Reporting Services报告定义。问题是,每当我尝试从流中加载报表定义时,都会出现错误。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与followinf文字:

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

详细翻译为“根元素缺失”。

什么可能是错的?

编辑: XML定义是正确的。加载定义后,问题出现在某处。

回答

0

您是否尝试将MemoryStream保存到单独的文件并将其与原始文件进行比较?

+0

是,文件是完全一样的。这就是为什么我不明白。 – Megacan 2010-01-07 18:16:44

+0

你介意分享这个文件吗? 'LoadReportDefinition'通常工作正常,我从来没有听说过任何问题。有可能文件中有一些格式不正确的内容会让人感到困惑。 – 2010-01-07 19:29:48

+0

我通过创建临时文件并加载它来解决问题。这里的文件: http://www.megaupload.com/?d=I9MJKZTF – Megacan 2010-01-08 09:40:59

2

您必须在重新读取之前将流重置回位置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()上this page

+0

Tks的答案。我有一段时间没有触及过这个项目,但是当我有机会的时候,我会尝试一下。 – Megacan 2010-03-26 10:12:12

+0

谢谢,这为我解决了同样的问题。 – DanDan 2012-02-22 13:19:17

相关问题