.net core 下FastReport打印应用崩溃

本文介绍了在.NET Core环境中,使用FastReport进行打印服务时遇到的应用崩溃问题。分析发现,特定的模板文件导致内存持续增长。通过创建测试工具模拟数据源和打印过程,定位到问题模板并删除引起内存泄漏的字体,成功解决了内存暴涨的问题。建议在.NET Core中引入第三方库时要谨慎,尤其是非开源且收费的库。
摘要由CSDN通过智能技术生成

问题描述

.Net core 下提供的打印服务,利用了第三方的收费库FastReport,该类库在.net Framework下一只表现不错,因此我司在微服务迁移后,仍采用该方案。
上线后,某天某人编辑了打印模板,结果几个小时后,悲剧发生,微服务崩溃,打印服务彻底宕机,紧急增加虚机配置,并无什么卵用。

问题分析

最直接的方法:比对模板文件,并未发现不妥,有些字体方面的不同,也是必须的,因此初期并未重视。
线上已经炸锅,怎么办?
那就直接上测试吧,把之前的打印快速移植到一个控制台程序,模板文件加载上。测试一切OK。什么鸟问题?
循环加载试下,oooop,内存竟然在涨,不会自己释放吗?
比对下旧模板,嗯,内存可以释放。那可以确定是模板的问题了!
再次比对FastReport打印模板,决定吧字体删除,这下测试下,并不 增加内存,好了,上线,问题消除。

FastReport 是一款功能强大的报表工具,可以方便地生成各种格式的报表。下面是使用 vben admin +vue3 和 .Net 开发实现 FastReport 打印高级范例的步骤: 1. 准备工作 在开始之前,需要安装 FastReport 插件和相应的依赖库。可以从官网下载 FastReport 插件,并将其添加到项目中。此外,还需要安装 .Net Framework 和相应的 NuGet 包。 2. 创建报表模板 使用 FastReport Designer 创建报表模板。在模板中添加需要展示的数据源和各种控件,如表格、图表、文本框等。 3. 编写 .Net 代码 在 .Net 中,需要使用 FastReport 对象来加载报表模板并填充数据。可以使用以下代码实现: ```csharp using FastReport; using System.Data; public void PrintReport() { // 加载报表模板 Report report = new Report(); report.Load("report.frx"); // 填充数据 DataTable dt = GetData(); report.RegisterData(dt, "Data"); report.GetDataSource("Data").Enabled = true; // 渲染报表 report.Prepare(); // 打印报表 report.Print(); } private DataTable GetData() { // 获取需要展示的数据 // ... } ``` 4. 在 vben admin +vue3 中调用 .Net 代码 在 vben admin +vue3 中,可以使用 axios 发送请求调用 .Net 中的代码。可以使用以下代码实现: ```javascript import axios from 'axios'; export function printReport() { return axios.post('/api/printReport', {}) .then(response => response.data); } ``` 在 .Net 中,需要创建一个控制器来处理请求,并调用上述的 .Net 代码。可以使用以下代码实现: ```csharp using System.Web.Http; public class ReportController : ApiController { [HttpPost] public void PrintReport() { // 调用 .Net 代码 PrintReport(); } } ``` 这样,就可以在 vben admin +vue3 中调用 .Net 中的 FastReport 代码来打印报表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webmote

如果能帮到你,请支持下博主

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值