2009-08-25 52 views
0

我有一些RDL在(Windows窗體).net 2.0應用程序中使用它。Intermitant DefinitionInvalidException與Windows窗體ReportViewer 2008

當用戶在應用程序中單擊時,rdl會重新加載到報表查看器中。 對於同樣的RDL我有時會得到錯誤,有時候不會。

當我在Visual Studio中運行我的應用程序調試時,它永遠不會收到錯誤。運行後 ,我立即從bin文件夾啓動exe文件,現在我得到的錯誤(但只有50%的報告被刷新的時間)

當我打電話ReportViewer.RefreshReport

我發生異常我已經在每一個有分鐘的地方看過RDL,它們都是「0」或「1」。

有趣的是,如果我在調用RefreshReport之前立即調用Application.DoEvents(),我可以將錯誤發生的時間降低到5%......但它偶爾也會發生!

報告「主報告」的定義無效。 ,報表處理中發生意外錯誤。 ,爲「的minOccurs」屬性的值無效 - 對於「的minOccurs」屬性的值必須XSD:非負.. (DefinitionInvalidException) 堆棧跟蹤: Microsoft.Reporting.DefinitionInvalidException:該報告的主要的定義報告「無效。 ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:報表處理中發生意外錯誤。 ---> System.Xml.Schema.XmlSchemaException:'minOccurs'屬性的值無效 - 'minOccurs'屬性的值必須是xsd:nonNegativeInteger .. at System.Xml.Schema.XmlSchema.Read(的XmlReader讀取器,的ValidationEventHandler的ValidationEventHandler) 在System.Xml.Schema.XmlSchema.Read(流流,的ValidationEventHandler的ValidationEventHandler) 在Microsoft.ReportingServices.ReportProcessing.ReportPublishing.RmlValidatingReader..ctor(XmlTextReader的TextReader的,PublishingErrorContext errorContext,字符串targetRDLNamespace) 在Microsoft.ReportingServices.ReportProcessing.ReportPublishing.RmlValidatingReader.CreateReader(XmlTextReader upgradedRDLReader,PublishingErrorContext errorContext,String targetRDLNamespace) at Microsoft.ReportingServices.ReportProcessing.ReportPublishing.Phase1(CatalogItemContext repor tContext,字節[]定義,CreateReportChunk createChunkCallback,CheckSharedDataSource checkDataSourceCallback,字符串&描述,字符串&語言,DataSourceInfoCollection &數據源,UserLocationFlags & userReferenceLocation,布爾& hasExternalImages,布爾& hasHyperlinks) 在Microsoft.ReportingServices.ReportProcessing.ReportPublishing.CreateIntermediateFormat(CatalogItemContext reportContext,Byte []定義,CreateReportChunk createChunkCallback,CheckSharedDataSource checkDataSourceCallback,PublishingErrorContext errorContext,AppDomain compilationTempAppDomain,Boolean generateExpressionHostWithRefusedPermissions,字符串& description,字符串&語言,ParameterInfoCollection &個參數,DataSourceInfoCollection &數據源,UserLocationFlags & userReferenceLocation,ArrayList的& dataSetsName,布爾& hasExternalImages,布爾& hasHyperlinks) 在Microsoft.ReportingServices.ReportProcessing.ReportProcessing。的compileReport(CatalogItemContext reportContext,字節[] reportDefinition,CreateReportChunk createChunkCallback,CheckSharedDataSource checkDataSourceCallback,PublishingErrorContext errorContext中,AppDomain compilationTempAppDomain,布爾generateExpressionHostWithRefusedPermissions,字符串& reportDescription,字符串& reportLanguage,ParameterInfoCollection &參數,DataSourceInfoCollection &數據源,UserLocationFlags & userReferenceLocation,ArrayList的& dataSetsName,布爾& hasExternalImages,Boolean & hasHyperlinks) at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(CatalogItemContext reportContext,Byte [] reportDefinition,CreateReportChunk createChunkCa llback,CheckSharedDataSource checkDataSourceCallback中,AppDomain compilationTempAppDomain,布爾generateExpressionHostWithRefusedPermissions) ---在Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(CatalogItemContext reportContext內部異常堆棧跟蹤--- 結束時,字節[] reportDefinition,CreateReportChunk createChunkCallback,CheckSharedDataSource checkDataSourceCallback,應用程序域compilationTempAppDomain,布爾generateExpressionHostWithRefusedPermissions) 在Microsoft.Reporting.ReportCompiler.CompileReport(CatalogItemContext上下文中,字節[] reportDefinition,布爾generateExpressionHostWithRefusedPermissions,ReportSnapshotBase &快照) ---內部異常堆棧跟蹤的結尾--- 在Microsoft.Reporting。 ReportCompiler.CompileReport(CatalogItem上下文語境,字節[] reportDefinition,布爾generateExpressionHostWithRefusedPermissions,ReportSnapshotBase &快照) 在Microsoft.Reporting.StandalonePreviewStore.StoredReport.CompileReport() 在Microsoft.Reporting.StandalonePreviewStore.StoredReport.get_Snapshot() 在Microsoft.Reporting.StandalonePreviewStore.GetCompiledReport (CatalogItemContext背景下,布爾重建,ReportSnapshotBase &快照) 在Microsoft.Reporting.LocalService.GetCompiledReport(CatalogItemContext itemContext,布爾重建,ReportSnapshotBase &快照) 在Microsoft.Reporting.LocalService.CompileReport(CatalogItemContext itemContext,布爾重建) 微軟.Reporting.WinForms.LocalReport.CompileReport()

回答

0

而不是

ReportViewer.RefreshReport 

這樣做似乎解決它。

Application.DoEvents() 
ReportViewer.LocalReport.ExecuteReportInCurrentAppDomain(Reflection.Assembly.GetExecutingAssembly().Evidence)