1

我们在(旧版)4.8.2 版本中的自定义 DotNetNuke 模块上有一个 MS ReportViewer 9.0.0.0 控件。在尝试升级到 10.0.0.0 时,我们遇到以下错误:

PageLoadException:页面不能为空。请确保在 ASP.NET 请求的上下文中执行此操作。

以下是 DotNetNuke 模块中主视图控件的相关 ASCX 代码:

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<rsweb:ReportViewer ID="report" runat="server" ProcessingMode="Remote" />

此外,还有一些设置 的代码IReportServerCredentials,我已经省略了那部分代码,因为问题发生在报告甚至呈现之前。

堆栈跟踪非常大,但这里有一些相关位:

DotNetNuke.Services.Exceptions.PageLoadException
System.InvalidOperationException:页面不能
在 System.Web.UI.ScriptManager.get_IPage()
...
在 Microsoft.Reporting.WebForms.ReportViewer.Render(HtmlTextWriter writer)
...
在 DotNetNuke。 Framework.PageBase.Render(HtmlTextWriter 编写器)

我的 Google-fu 根本没有帮助我。我试过摆弄ScriptManagerDotnetNuke 的 Default.aspx.vb 文件,玩弄 ReportViewer 控件的属性,并阅读各种相关的 MSDN 文章。没有骰子。

问题:如何让 ReportViewer 10.0.0.0 在 DotNetNuke 4.8.x 中工作?

4

1 回答 1

1

这是我最近遇到的少数几个问题之一,在 SO 上搜索无法回答。经过更多的摆弄之后,我已经解决了这个问题,并认为我会给新的Answer your own question功能一个旋转。所以这就是为我解决问题的方法。


这个问题可以通过启用 DotNetNuke AJAX 实现来解决您的模块中包含 ReportViewer 的特定控件。学分转到这个旧帖子,详细说明了使它工作的步骤。另请参阅有关此功能的 2007 DotNetNuke 博客文章。实质如下:

  1. 以 DNN 主机身份登录
  2. 转到模块的模块定义
  3. 编辑模块的设置
  4. 使用 ReportViewer 查找控件
  5. 单击以编辑控件的设置
  6. 点击Supports Partial Rendering设置复选框
  7. 保存设置

ReportViewer 控件现在应该可以工作了。

于 2012-06-12T13:29:21.930 回答