5

我在使用标准 ASP.NET ReportViewer 控件(v11、SQL 2012、VS 2012)时遇到问题。这以前在某个时候可以工作,连接到远程 SSRS 服务器,但是在网站开发过程中出现了问题,我正在努力找出原因。

如果我创建一个简单的表单:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReportTest.aspx.cs" Inherits="ReportTest" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        This is a test!

        <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
            <ServerReport ReportPath="/Reports/MyTestReport" ReportServerUrl="http://sqlserver/reportserver" />           
        </rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

..并运行它,浏览器上什么也没有显示。甚至没有This is a test!文本都没有,这表明服务器端发生了“崩溃”。支持这个理论,使用 Fiddler 我可以看到没有尝试联系报表服务器。

我在 Visual Studio 中打开了所有异常捕获,但没有捕获任何东西,而且我在输出中看不到任何明显的东西。ReportViewer 控件在设计模式下正确显示,并且我重新安装了 ReportViewer 可再发行组件。

4

4 回答 4

3

我发现了问题,或者说是两个问题:

  • 我需要在页面上有一个 ScriptManager。使用上述测试网页创建一个全新的项目会引发有关 ScriptManager 要求的错误,尽管原始项目中的测试页面(实际上,我的原始生产页面)并没有抱怨缺少 ScriptManager。我一定是误删了原来的 ScriptManager。要修复它,我需要添加的是:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    
  • 其次 - 这是在生产代码本身 - 我有参数

    ShowParameterPrompts="True"

    定义此选项后,页面将不会加载,并给出与上述相同的错误。但是,删除该选项允许页面正常加载。

于 2013-05-17T13:14:08.713 回答
2

我想我有类似的东西。当我将后面的代码添加到 Page_Init 而不是 Page_Load 时,我已经修复了它。

尝试添加这一行:

rptv.ServerReport.Refresh();
于 2013-05-19T21:33:50.683 回答
2

this.ReportViewer1.AsyncRendering = false;

这使我的页面有效。

于 2015-02-17T03:56:21.507 回答
2

如果您要发送一个可以接受空值的参数,则必须在 ReportViever 中定义它接受空值。他没有定义我显示空白报告而不给出任何错误。

于 2015-10-06T12:54:01.617 回答