使用 ReportProcessor 打印 Telerik 报告 class

Printing Telerik reports using ReportProcessor class

首先让我描述一下我的设置。

我有一个 REST Telerik 报告服务。该服务使用 TRDX 文件运行(要求具有此模板格式的报告)。我还有一个控制台应用程序,它由 windows 服务定期启动。此控制台应用程序使用 ReportProcessor class 将报告直接打印到打印机。

问题来了。

当这些报告文件与 REST 报告服务一起托管在 IIS 中时,ReportProcessor 在尝试使用 UriReportSource 访问报告时抛出异常。在 IIS 上为 Reports 文件夹启用了浏览和匿名身份验证。抛出的错误是:

远程服务器返回错误:(404) 未找到。

但是,当 TRDX 文件与控制台应用程序位于同一文件夹中时,会打印报告。

通过反复试验解决了我自己的问题。

我的报告位于 REST 服务的子目录中。所以我试图将 Uri 设置为报告 URL 是这样的:

UriReportSource reportSource = new UriReportSource { 
    Uri = "http://localhost/myTelerikRESTService/Reports/samplereport.trdx" 
};

我显然收到了 404 错误,因为对该路径的请求将由服务处理。

尝试指定物理路径 (c:\inetpub\wwwroot\myTelerikService\Reports\samplereport.trdx) 也以错误告终:类似于 the path format is not supported.

我终于尝试了这个 Uri:/inetpub/wwwroot/myTelerikService/Reports/samplereport.trdx,它映射到物理位置。

成功了!

编辑:

我真的应该在处理这个问题之前阅读这篇文章 https://www.w3.org/Addressing/URL/uri-spec.html。显然我对 URI 是什么没有确切的了解!现在感觉真傻.....