惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Vercel News
Vercel News
F
Fortinet All Blogs
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Engineering at Meta
Engineering at Meta
爱范儿
爱范儿
V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
U
Unit 42
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
S
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
Attack and Defense Labs
Attack and Defense Labs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LangChain Blog
博客园 - 【当耐特】
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hacker News: Ask HN
Hacker News: Ask HN
Jina AI
Jina AI
Schneier on Security
Schneier on Security
W
WeLiveSecurity
Microsoft Security Blog
Microsoft Security Blog
博客园_首页
博客园 - 聂微东

博客园 - 匡匡

Vue 父子组件通信方式 Vue: 组件扩展 WebClient 指定出口 IP IIS8 下 JS, CSS 等静态文件出现 500 错误 使用 ffmpeg 转换 mov 视频 使用 ildasm 和 ilasm 修改程序集的的引用信息 .Net Core 程序集管理说明(加载) .NET CORE 动态加载 DLL 的问题 ASP.NET 后台 COOKIE 的设置 使用 sql server 默认跟踪分析执行的 SQL 语句 Nginx深入详解之upstream分配方式 使用 HttpWebRequest 类做 POST 请求没有应反 webpack 里的 import, exports 实现原理 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法 Flex 布局里 input 宽度最小 150px 的问题, 浏览器 BUG? 使用像素单位设置 EXCEL 列宽或行高 sweetalert 快速显示两个提示, 第二个显示不出的问题 加权轮询和加权随机算法 在 Docker 中部署 ASP.NET CORE 应用
2020-01-08 工作日记:无题
匡匡 · 2020-01-09 · via 博客园 - 匡匡

有个客户有个发文功能, 发文上传的是一个红头 WORD 文件, 需要在线预览, 以前有这个功能, 是使用 aspose.words 组件把 word 另存为了 pdf 文件, 然后再显示给用户在线查看,但是在使用 aspose.words 组件转换为 pdf 的时候有些情况会变形,因为是基本是红头文件,所以对文件的格式要求非常高,不能有任何变形,经测试,变形的文件,在 word 中打开然后另存为 pdf 文件,则不会变形,于是想到了就在服务器上装个 office, 调用 word 本身来转 pdf。

首先是开发了一个控制台应用程序,控制台程序里面调用 word 应用程序来转换,然后在 asp.net 里通过 Process 类来调用此命令行程序,通过传递源文件路径和目标文件路径给控制台程序,经测试,我在 cmd 下面调用此控制台程序来转文件,没有任何问题,但是在 asp.net 里通过 Process 程序来调用,怎么都转换不成功,在进程管理器里可以看到已经打开了 word, 没有任何响应,而且 word 占用内存奇高, 根据日志信息, 发现是对 dcom 没有权限, 根据相关查询,对 Microsoft Office word 组件进行了一些设置,发现还是不行。给 Process 类设置了 windows 的帐号和密码也不行,想在 web.config 里设置帐号, 想想还是算了,这个客户的服务器,不方便添加帐号密码。

于是又想着开发一个 windows services, windows service 一般是使用 local system 帐号来运行,应该有权限吧, 于是把刚才的控制台程序改造了一下, 在内部提供了一个 http server 服务, asp.net 通过 webclient 和控制台程序进行交互,再利用 nssm 工具,把控制台程序转换为了一个 windows services 程序,经测试, 直接运行控制台程序,然后 asp.net 调用,没有问题, 作为一个 windows services 来运行,还是不行,通过一翻查找,发现有这样那样的设置,经过一翻设置后,还是不行。

最终又把程序搞成了一个 winform 程序,内置一个 httpserver 程序,然后在设置自动调动(把快捷方式复制到了启动目录:  shell:startup), 程序在判断一下是否有启动过,有启动过就不在启动。自动启动后,asp.net 里再调用,就没有问题了。

程序的核心代码非常简单,也非常快就实现了,但是因为各种原因,最终折腾了一个下午。