您好,并提前感谢您的帮助,
我试图通过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服务器上的某些配置。
谢谢!
答案 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的所有调用以及缺少选项或输入的提示。