基于 ASP.NET Core 和 Python 的 PDF 转 Word 工具开发与部署实践
在文档处理场景中,常遇到 PDF 无法直接编辑、内容修改导致重排耗时、表格复制错位等问题。本文介绍了一个基于 ASP.NET Core 和 Python 实现的 PDF 转 Word 工具的开发与部署经验。
一、需求背景
- PDF 文件无法直接编辑
- 修改少量内容需重新排版
- 表格和格式在转换过程中容易错乱
二、项目实施踩坑总结
(一)Python 调用与 IIS 部署
- 问题:本地能跑,部署到 IIS 服务器后 Python 无法执行或路径找不到
- 原因:
- Python.exe 路径写死在本地
- IIS 应用程序池权限不足
- 解决方案:
使用配置文件 (
appsettings.json) 或环境变量指定 Python.exe 路径,确保应用池有执行权限
(二)支付系统与用户次数管理
- 问题:
- Notify 回调中将流水号误当 AccountId 存入数据库,导致查询失败
- 依赖注入生命周期冲突,服务取不到最新状态
- 解决方案:
修正 AccountId 与订单流水号的对应关系。在 Controller 内使用
IServiceScopeFactory.CreateScope()创建服务范围,确保生命周期正确
(三)文件大小限制与 Kestrel 配置
- 问题:大文件上传时失败
- 原因:ASP.NET Core 默认上传限制较小,超出阈值后服务器无法处理
- 解决方案:
修改 Kestrel 配置:
options.Limits.MaxRequestBodySize = 104857600修改 FormOptions:options.MultipartBodyLengthLimit = 104857600
(四)异步处理与生命周期冲突
- 问题:
- 在 Controller 中调用异步服务出现'对象为空'和'生命周期冲突'
- 原因:
- 直接注入 Scoped 服务到 Singleton 或后台任务
- 解决方案:
- 使用
IServiceScopeFactory.CreateScope()在后台任务中创建服务实例,使用 using 创建临时作用域
- 使用
三、技术栈
后端核心
| 技术 | 用途 | 说明 |
|---|---|---|
| ASP.NET Core 8 | Web API 框架 | 提供控制器、路由、JWT 授权、文件上传接口 |


