0

我的目标是生成一个 PDF 以显示在网页中,可以是 aspx 格式,也可以是通用处理程序。(这将从 Silverlight 页面链接,但这与问题无关。)

问题是 LocalReport (Microsoft.Reporting.WebForms; Microsoft.ReportViewer.WebForms.dll) 需要完全信任,而我们的托管服务器不允许完全信任。我知道 ReportViewer 有一个远程模式,允许它以部分信任运行,但为此我需要一个报告服务器 url,它可能也应该完全信任,但这不能解决任何问题。

那么如何在部分受信任的环境中从 WebForms(RDLC 报告)生成 PDF?

编辑:我在 VS 2008 中使用 C# 3.5。

4

3 回答 3

1

您应该先与您的托管公司核实他们的系统上是否安装了 PDF 创建库并使用它。

我还没有在中等信任度中测试过我自己,但是有些人已经通过这个开源项目在中等信任度方面取得了成功:http: //sourceforge.net/projects/itextsharp/

干杯,斯特凡

更新

private LocalReport CreateReport()
{
    LocalReport myReport = new LocalReport();
    myReport.ReportPath = "Report1.rdlc";

    // Insert parameters if needed
    ReportParameter myParam = new ReportParameter("MyParamName", "myParamValueAsString");

    myReport.SetParameters(new ReportParameter[] { myParam });

    return myReport;
}
You can call the function to create the PDF:



//Create new pdf file
Byte[] mybytes = CreateReport().Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings);

并且可以使用 Response 写出 mybytes 以供下载..

于 2010-12-30T10:50:23.290 回答
0

您是在服务器上使用 .NET 4 还是以前的版本?我相信(基于 MSDN 上的此帮助页面:http: //msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.localreport.executereportinsandboxappdomain.aspx)ReportViewer 控件始终在沙盒应用程序域中执行. 但是,对于以前的版本(或者当您使用 LegacySecurityPolicy 时),您需要通过调用 LocalReport 对象上的 ExecuteReportInSandboxAppDomain 方法来明确指定报表查看器应该这样做。我不确定,但这可能会解决您的问题。

于 2011-01-03T06:26:47.683 回答
0

除非我得到更多解决问题的答案,否则这将是最好的解决方法:

我联系了托管服务器,他们有一个单独的服务器,允许访问 Microsoft.ReportViewer(可能运行完全信任),但需要额外付费。

于 2011-01-04T06:58:45.300 回答