ReportViewer 控件返回空白页

Ken*_*enD 5 asp.net reportviewer reporting-services

我在使用标准 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>
Run Code Online (Sandbox Code Playgroud)

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

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

Ken*_*enD 3

我发现了这个问题,或者更确切地说是两个问题:

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

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    
    Run Code Online (Sandbox Code Playgroud)
  • 其次 - 这是在生产代码本身中 - 我有参数

    ShowParameterPrompts="True"

    定义此选项后,页面将无法加载,并出现与上面相同的错误。但是,删除该选项可以使页面正常加载。