2010-01-05 110 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

相關問題