代码之家  ›  专栏  ›  技术社区  ›  MikeG

Intermitant DefinitionInvalidexception与Windows窗体ReportViewer 2008

  •  0
  • MikeG  · 技术社区  · 17 年前

    我在(Windows窗体).NET 2.0应用程序中使用了一些RDL。

    当用户在应用程序中点击时,RDL会重新加载到报表查看器中。 对于同一个RDL,我有时会出错,有时不会。

    当我在Visual Studio中运行应用程序调试时,它永远不会出错。 运行后,我立即从bin文件夹启动exe,现在我得到错误(但只有50%的时间报告刷新)

    调用ReportViewer.RefreshReport时发生异常

    我已经查看了RDL中每一个存在偶发事件的地方,它们都是“0”或“1”。

    有趣的是,如果我在调用RefreshReport之前立即调用application.doEvents(),我可以,但是错误发生的时间减少到了5%…但它仍然偶尔发生!

    报表“主报表”的定义无效。 ,报表处理中发生意外错误。 “minOccurs”属性的值无效-“minOccurs”属性的值必须是xsd:nonNegativeInteger。”。 (定义、有效、敏感性) 堆栈跟踪: Microsoft.Reporting.DefinitionValidException:报表“主报表”的定义无效。--->Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:报表处理中发生意外错误。--->system.xml.schema.xmlschemaException:“minOccurs”属性的值无效-“minOccurs”属性的值必须是xsd:nonNegativeInteger。” 在system.xml.schema.xml schema.read(xml reader reader,validationEventHandler validationEventHandler) at system.xml.schema.xml schema.read(流、validationEventHandler、validationEventHandler) 位于Microsoft.ReportingServices.ReportProcessing.ReportPublishing.RmlvalidatingReader..ctor(xmlTextReader TextReader,PublishingErrorContext ErrorContext,String TargetrDlnamespace) 在Microsoft.ReportingServices.ReportProcessing.ReportPublishing.RmlvalidatingReader.CreateReader(XmltextReader upgradedRdlReader,PublishingErrorContext ErrorContext,String TargetRdlNamespace) 在Microsoft.ReportingServices.ReportProcessing.ReportPublishing.Phase1(CatalogItemContext ReportContext,Byte[]定义,CreateReportChunk CreateChunkCallback,CheckSharedDataSource CheckDataSourceCallback,String&Description,String&Language,DataSourceInfoCollection&DataSources,UserLocationFlags&UserReferenceLocation,BOOlean&hasExternalImages、Boolean&hashyperLinks) 在Microsoft.ReportingServices.ReportProcessing.ReportPublishing.CreateMintermediateFormat(CatalogItemContext ReportContext,Byte[]定义,CreateReportChunk CreateChunkCallback,CheckSharedDataSource CheckDataSourceCallback,PublishingErrorContext,AppDomain CompilationTempAppDomain,Boolean GenerateExpressionHostwithrousedPermis选项、字符串和说明、字符串和语言、参数信息集合和参数、数据源信息集合和数据源、用户位置标志和用户引用位置、数组列表和数据集名称、布尔值外部图像、布尔值哈希类型链接) 在Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CompileReport(CatalogItemContext ReportContext,Byte[]ReportDefinition,CreateReportChunk CreateChunkCallback,CheckSharedDataSource CheckDataSourceCallback,PublishingErrorContext ErrorContext,AppDomain CompilationTempAppDomain,Boolean GenerateExpressionHostwithFusedPermissions,字符串和报表描述,字符串和报表语言,参数信息集合和参数,数据源信息集合和数据源,用户位置标志和用户引用位置,数组列表和数据集名称,布尔值和具有外部图像,布尔值和哈希类型链接) 在Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(CatalogItemContext ReportContext,Byte[]ReportDefinition,CreateReportChunk CreateChunkCallback,CheckSharedDataSource CheckDataSourceCallback,AppDomain CompilationTempAppDomain,Boolean GenerateExpressionHostwithFusedPermissions) ---内部异常堆栈跟踪结束--- 在Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(CatalogItemContext ReportContext,Byte[]ReportDefinition,CreateReportChunk CreateChunkCallback,CheckSharedDataSource CheckDataSourceCallback,AppDomain CompilationTempAppDomain,Boolean GenerateExpressionHostwithFusedPermissions) 在Microsoft.Reporting.ReportCompiler.CompileReport上(CatalogitEmContext上下文,Byte[]ReportDefinition,Boolean GenerateExpressionHostwithFusedPermissions,ReportSnapshotbase&Snapshot) ---内部异常堆栈跟踪结束--- 在Microsoft.Reporting.ReportCompiler.CompileReport上(CatalogitEmContext上下文,Byte[]ReportDefinition,Boolean GenerateExpressionHostwithFusedPermissions,ReportSnapshotbase&Snapshot) 在Microsoft.Reporting.StandalonePreviewsStore.StoredReport.CompileReport()上 在Microsoft.Reporting.StandalonePreviewsStore.StoredReport.Get_Snapshot()上 在Microsoft.Reporting.StandalonePreviewsStore.getCompiledReport(CatalogItemContext上下文,布尔重建,ReportSnapshotbase&Snapshot) 在microsoft.reporting.localservice.getcompiledReport(catalogitemContext itemContext,布尔重建,reportSnapshotBase&快照)上 在Microsoft.Reporting.LocalService.CompileReport(CatalogGiteContext项上下文,布尔重建) 在Microsoft.Reporting.WinForms.LocalReport.CompileReport()上

    1 回复  |  直到 17 年前
        1
  •  0
  •   MikeG    17 年前

    而不是

    ReportViewer.RefreshReport
    

    这样做似乎可以解决问题。

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