1

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

我正在尝试通过 JQuery/Ajax 将 JSON 对象发布到 ASP.Net MVC 服务器。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!');
        }
    });
}

这是控制器方法:

[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 服务器时,POST 请求不会终止。我找到了这条线

vLL.Print();

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

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

谢谢!

4

1 回答 1

1

仅调用该Print方法是不够的,因为您需要告诉 List & Label 在哪里生成报告。我宁愿以这种方式使用该Export方法(因为它连接了许多方便的东西,例如使文件对话框静音):

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

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

于 2017-01-18T07:54:34.197 回答