c# - ASP.NET Core MVC 应用程序中的 Microsoft LocalReport (rdl)
问题描述
我正在使用 ASP.NET Core (2.1) MVC 运行一个项目。在我们公司,我们确实使用 SQL Report Builder(rdlc 和 rdl 文件)完成了很多工作。因此,我们想在 asp.net core mvc webapp 中使用“one the fly”机制通过 ReportBuilder 技术生成 PDF 文件。
我尝试了我们在 .net Framework(asp.net API 和桌面应用程序)中使用的相同 nuget 包,但它们不起作用。我试过的包是:
- Microsoft.ReportingServices.ReportViewerControl.Winforms
- Microsoft.ReportingServices.ReportViewerControl.Webforms
问题是他们使用的是 System.Web,我不能将其包含在 .net Core 应用程序中,对吗?
我搜索了任何解决方案,但没有找到很多有用的材料。我也知道微软购买了一个产品来完成工作: https ://blogs.msdn.microsoft.com/sqlrsteamblog/2018/04/02/microsoft-acquires-report-rendering-technology-from-forerunner-软件/
我已经读过这篇关于类似问题的文章: RDLC Local report viewer for ASP.NET Core and Angular(>2.0)
我们是否考虑到了错误的技术设置,或者这甚至根本不支持。我发现了一些其他包(https://www.nuget.org/packages/AlanJuden.MvcReportViewer.NetCore/),它们正在使用 html 来呈现报告。但我们真的很想使用 rdl 文件
非常感谢任何信息和建议。
解决方案
最后我们想出了一个完全不同的方法。
我们刚刚在 .NET Framework 上创建了一个名为“DocumentService”的新应用程序,该应用程序在 Windows Server 上作为服务运行。如果数据库队列中有新作业,该服务正在检查数据库,如果有,它会生成 pdf 结果并将其存储在数据库中。
因此,Web 应用程序不再负责创建 pdf,它只是在数据库中添加了一个新行,以便标记应该创建一个新文档。DocumentService 应用程序随后生成文档,Web 应用程序可以访问数据库中的数据。
我们可以在应用程序环境的其他部分使用这个“DocumentService”,因此付出的努力是值得的。它的应用程序也是多线程的,并且工作得非常快而且很好。
推荐阅读
- c# - 为 Mono 上的 ConsoleApp 选择正确的框架
- git - 被 git 子模块弄糊涂了
- android - Android 线程处理程序始终为空
- vuejs2 - 如何在 Vue 中正确使用 Ace Editor?
- python - 如何使用 ItemLoader 在项目中添加链接?
- android - 当用户离线时,哪个 socket.io 函数会立即被触发?
- php - 如果 (isset($_POST[ 回声 $_POST
- macos - 从 macOS 应用程序打印 PDF - 将上下文定义为 PDFDocument
- javascript - 如何通过 Steam Web API 使用 JSON 格式的 javascript-jquery 获取所有 Steamapps
- java - 如何修复遍历这个数组列表?