列表和标签Web报表:导出/打印在IIS服务器上不起作用

时间:2017-01-17 11:54:33

标签: iis asp.net-mvc-5 listlabel

您好,并提前感谢您的帮助,

我试图通过JQuery / Ajax将JSON-Object发布到ASP.Net MVC-Server。 Controller方法应该接受JSON输入并将其用作List& Label 22的DataProvider。然后应该生成报告并将其作为PDF文件提供给用户以供下载。 由于我希望JSON对象的结构是通用的,我不想在ASP.Net中为此请求创建特定模型,而是将JSON对象作为字符串传递(我知道我可能会运行)进入一些规模限制,但我会担心以后:))。

这是我的POST请求:

<script>

function getReport() {
    //dummy data
    data = { JsonVariable1: 1, JsonVariable2: "JsonVariable2" };
    var dataSource = JSON.stringify(data);

    $.ajax({
        type: "POST",
        dataType: "text",
        url: "@Url.Action("/JsonTest")",
        data: "aDataSource=" + dataSource,
        async: false,
        success: function (result) {
            alert('Success!');
        }
    });
}

这是Controller方法:

[HttpPost]
public ActionResult JsonTest(string aDataSource) {

    combit.ListLabel22.ListLabel vLL = new combit.ListLabel22.ListLabel();
    JsonDataProvider vJsonProvider = new JsonDataProvider(aDataSource);

    vLL.FileRepository = GetCurrentRepository();
    vLL.AutoProjectFile = mReportRepositoryId;
    vLL.DataSource = vJsonProvider;
    vLL.ExportOptions.Add(LlExportOption.ExportTarget, "PDF");
    vLL.Print();    //This causes problem on published server

    return Json("Success");
}

在本地,即在我的Visual Studio(2015)开发环境中,这可以正常工作。但是,当我将代码发布到我的IIS-Server时,POST请求不会终止。我找到了这一行

vLL.Print();

成为问题。如果我注释掉这一行,请求将按预期终止。此行生成报告并将其导出为PDF,然后PDF将作为下载提供给用户 我在运行Windows Server 2012 R2的计算机上使用IIS 8.5和.NET-Framework 4.5。安装了打印机驱动程序,并且常规的List&amp; Label功能正在运行(例如,启动Web设计器,通过HTML预览报告等)。

有谁知道我在这里缺少什么?我不是Web开发人员,我可能也忘记调整IIS服务器上的某些配置。

谢谢!

1 个答案:

答案 0 :(得分:1)

仅仅调用Print方法是不够的,因为您需要告诉List&amp;标记生成报告的位置。我宁愿使用Export方法(因为它连接了一些方便的东西,比如静音文件对话框):

string reportResult = "Report." + Guid.NewGuid() + ".pdf";
string outputFile =  Server.MapPath("~/exports/") + reportResult;
ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, outputFile, mReportRepositoryId);
vLL.Export(exportConfiguration);

然后您应该在&#34; exports&#34;中找到您的PDF。您的Web应用程序在服务器上的路径。要解决此类问题,您可以使用提供的调试工具Debwin4。它显示了对API的所有调用以及缺少选项或输入的提示。