C# 如何使用报表查看器从asp网页打开ssrs报表

C# 如何使用报表查看器从asp网页打开ssrs报表,c#,asp.net,ssrs-2008,C#,Asp.net,Ssrs 2008,我正在尝试使用ReportViewer在我的网页上打开ssrs报告。对于报表服务器URL,我有: http://db_servers/ReportsServer_SENSORSQLSERVER 对于我的报告路径,我有: http://db_servers/ReportsServer_SENSORSQLSERVER/Pages/ReportViewer.aspx?%2fCustomer1&rs:Command=Render. 我已经浏览了很多网站和教程,了解如何添加URL,但我仍然收到

我正在尝试使用ReportViewer在我的网页上打开ssrs报告。对于报表服务器URL,我有:

http://db_servers/ReportsServer_SENSORSQLSERVER
对于我的报告路径,我有:

http://db_servers/ReportsServer_SENSORSQLSERVER/Pages/ReportViewer.aspx?%2fCustomer1&rs:Command=Render.

我已经浏览了很多网站和教程,了解如何添加URL,但我仍然收到一个错误提示:我的链接长度必须小于260个字符。(rsInvalidItemPath)。我还想指出,我的报表服务器处于本机模式。我的报表服务器位于另一台计算机上,因此我确保报表查看器上的处理模式是远程的。每当我进入surver url时,我都能清楚地看到我的报告列表,当我单击报告时,我也能看到它,因此我知道我的url是正确的。我已经尝试在我的报告路径url前面添加斜杠,用空格替换“2%f”。似乎什么都不管用。有什么想法吗?谢谢。

您需要分离到服务器的URL、报告路径并将参数添加到参数数组中

以下是一个示例:

    protected void Page_Init(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // Set the processing mode for the ReportViewer to Remote
        reportViewer.ProcessingMode = ProcessingMode.Remote;

        ServerReport serverReport = reportViewer.ServerReport;

        // Set the report server URL and report path
        serverReport.ReportServerUrl =
            new Uri("http://<Server Name>/reportserver");
        serverReport.ReportPath =
            "/AdventureWorks Sample Reports/Sales Order Detail";

        // Create the sales order number report parameter
        ReportParameter salesOrderNumber = new ReportParameter();
        salesOrderNumber.Name = "SalesOrderNumber";
        salesOrderNumber.Values.Add("SO43661");

        // Set the report parameters for the report
        reportViewer.ServerReport.SetParameters(
            new ReportParameter[] { salesOrderNumber });
    }
}
受保护的无效页\u Init(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
//将ReportViewer的处理模式设置为远程
reportViewer.ProcessingMode=ProcessingMode.Remote;
ServerReport ServerReport=reportViewer.ServerReport;
//设置报表服务器URL和报表路径
serverReport.ReportServerUrl=
新Uri(“http:///reportserver");
serverReport.ReportPath=
“/AdventureWorks示例报告/销售订单详细信息”;
//创建销售订单号报告参数
ReportParameter salesOrderNumber=新的ReportParameter();
salesOrderNumber.Name=“salesOrderNumber”;
salesOrderNumber.Values.Add(“SO43661”);
//设置报告的报告参数
reportViewer.ServerReport.SetParameters(
新的ReportParameter[]{salesOrderNumber});
}
}

您应该用
“/”
替换
“2%f”

问题在于ReportPath属性,例如:


%2fCustomer1
->
/Customer1

这是一个旧的,但我为一个客户偶然发现了它。要获取报表URL,我发现最简单的方法是通过SSMS连接到报表服务器运行的SQL实例,然后打开报表服务器数据库,查询目录表中的路径字段。

感谢您的回复。我尝试了上面的方法,但仍然得到一个错误:“找不到项目文件夹/reportname。(rsItemNotFound)我不确定您是否有报表的正确路径。它应该类似于/report folder/report name……您的示例中的路径似乎是从报表服务器GUI粘贴的路径……如果您的报表位于名为例如MySales的文件夹中,并且其中的报表名为Sales2012,则您需要报表路径将成为/MySales/sales 2012。