将rdlc报告呈现为不在azure网站上工作的PDF

时间:2015-12-27 10:51:16

标签: asp.net-mvc azure report rdlc azure-web-sites

我的rdlc报告存在以下问题。我正在创建一个asp.net MVC应用程序,需要使用报告。我的所有报告都可以在我的本地计算机上正常运行,但在azure网站上,我总是得到这个错误:

Error.
An error occurred while processing your request.

在我的azure bin文件夹中,我有以下dll' s

Microsoft.ReportViewer.Common
Microsoft.ReportViewer.DataVisualization
Microsoft.ReportViewer.ProcessingObjectModel
Microsoft.ReportViewer.WebForms
Microsoft.ReportViewer.WinForms

并有一个文件夹报告,其中包含我的所有报告。

我还将我的报告属性Build Action更改为内容,但仍然没有。有谁知道如何解决这个问题。

我正在使用的代码并在我的localhost上正常工作

        LocalReport lr = new LocalReport();
        string path = System.IO.Path.Combine(Server.MapPath("~/Reports"), "Model1.rdlc");
        if (System.IO.File.Exists(path))
        {
            lr.ReportPath = path;
        }
        else
        {
            return View();
        }

        ReportDataSource rd = new ReportDataSource("Model1");
        lr.DataSources.Add(rd);
        string reportType = id;
        string mimeType;
        string encoding;
        string fileNameExtension;

        string deviceInfo =

        "<DeviceInfo>" +
        "  <OutputFormat>" + id + "</OutputFormat>" +
        "  <PageWidth>8.5in</PageWidth>" +
        "  <PageHeight>11in</PageHeight>" +
        "  <MarginTop>0.2in</MarginTop>" +
        "  <MarginLeft>0.1in</MarginLeft>" +
        "  <MarginRight>0.1in</MarginRight>" +
        "  <MarginBottom>0.3in</MarginBottom>" +
         " <orientation>Landscape</orientation>" +

        "</DeviceInfo>";

        Warning[] warnings;
        string[] streams;
        byte[] renderedBytes;

        renderedBytes = lr.Render(
            reportType,
            deviceInfo,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

        return File(renderedBytes, mimeType); 

1 个答案:

答案 0 :(得分:3)

Azure App Service应用程序在称为沙箱的安全环境中运行,以隔离应用程序。 这个沙箱阻止了各种API调用,比如GDI + API。 问题可能来自这个限制。 有关更多信息,请参阅以下文档页面:https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox