【问题标题】:Trigger an SSRS Report from ASP.Net without user intervention无需用户干预即可从 ASP.Net 触发 SSRS 报告
【发布时间】:2014-05-28 16:23:14
【问题描述】:

我希望能够从 ASP.Net 应用程序中触发 SSRS 报告,而无需在应用程序中将其拉出并从那里打印到指定的打印机。这似乎是一个非常需要的功能,但我在网上找不到任何好的解决方案。谁能帮我解决这个问题?

【问题讨论】:

标签: c# asp.net vb.net reporting-services


【解决方案1】:

r首先,您需要将报表设置为从执行快照呈现。您应该在报告属性选项卡下找到它,执行,选择“从报告执行快照呈现此报告”单选按钮。

接下来,您将需要设置一个您希望将其交付给的订阅。在订阅选项卡下,添加新订阅,输入电子邮件信息等。在“订阅处理选项”下选择“报告内容刷新时”。

现在您需要能够以编程方式触发新快照。幸运的是,报告服务为此目的公开了一个 Web 服务。添加服务引用:

http://your_report_server:your_port/ReportServer/ReportService.asmx

添加引用后,您只需调用 UpdateReportExecutionSnapshot 方法即可执行报告并将其邮寄给订阅者。

一个简单的 C# 命令行应用程序可能如下所示:

static void Main(string[] args)
    {

        // The first argument should be the full report path
        // and name. It is passed directly to the Ssrs web service

        if (args.Length == 0)
        {
            throw new ArgumentException("Full report name must be the first parameter");
        }


        // create the endpoint

        ReportingServiceSoapClient ssrs = new ReportingServiceSoapClient();

        // Update the snapshot

        ssrs.UpdateReportExecutionSnapshot(null,args[0]);
     }

对于报告名称,您需要指定完整的报告名称,包括您拥有的任何子文件夹。因此,如果您的报告按部门组织,则必须指定所有父文件夹,例如:

/DivisionName/DailyReports/SalesReport

【讨论】:

  • 有趣...很好的信息。我将研究网络服务。我看到我没有提到我希望报告直接发送到指定的打印机。你知道这是否是一种选择吗?
  • 不确定,在我们使用的版本中没有这个选项。可能会在以后的版本中出现。但是,您可以将其发送到网络共享而不是电子邮件。假设其他人还没有写过东西来做这件事,你可能会一起扔一个 Windows 服务来把它捡起来并推到特定的打印机上。
  • 好的。我虽然关于那个。有了这两个答案,看来我又要重新创建一个小项目来完成任务了。
【解决方案2】:

从 Web 应用程序的角度来看,在现代 prowsers 中,我不相信您可以指定打印机,当然也不能“自动启动”打印。报告服务过去可以通过 MS 浏览器插件进行无人值守打印,但该功能在几年前已被删除,因为它现在被认为存在安全风险。

您可以做的最好的事情是“一键式”打印,即使用 ReportService.asmx Web 服务中的报表执行服务以编程方式呈现报表,并启动一个编程解决方案来打印呈现的报表。

不幸的是,自动打印 SSRS 报告非常复杂。你可以在这里阅读How to Print Reports Programmatically

【讨论】:

  • 有趣...我想我看到了链接,但不敢相信没有更简单的方法。不过,谢谢。
  • 这个博客是从 2011 年 9 月开始的 - 可能会有更好、更新的方法,但老实说,我不需要研究它,所以...... :)跨度>
猜你喜欢
  • 2011-11-16
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多