调用Microsoft.Office.Interop.Word将Word文档转换为PDF文档,在VS中启动运行正常,但发布到IIS上就转换不了,应该是权限的问题,但不知道怎么配,求解决方法?
需要你的服务器也有安装兼容版本的Word系统、PDF驱动等。
有安装,而且在开发机上的IIS也不成
@Euarne: 那有可能就是权限的问题了。试着把站点权限开到最大看。
@519740105: 不能转换的已经找到方法解决了,但又出现一个问题就是转换后word的进程会一直驻留,需要好长时间才能关闭,一个驻留进程占内存4M多,如果同事转换几个文件,内存就吃不消了.....各种头疼吖,不知道有木有其他方法...
@Euarne: 这个是属于.net的回收机制的问题导致的。要很好的解决还是很难。
1、你可以尝试多开几个服务进程
2、你可以尝试使用WinService来实现,尽可能的通过使用同一个Word进程来执行。
3、一个进程才4M也不多,多了后,.NET的回收机制会启动,整体的影响应该不大。
另外问一句:你不能转换的解决方案是?
@519740105: 调用Microsoft.Office.Interop*程序集 比如转换Word就调用Microsoft.Office.Interop.Word 这种方式转换倒是没什么问题,但性能和并发方面暂时没做测试,而且显示还遇到部署到IIS后的权限等一大堆问题,表示寻找替代解决方案ing
我也遇到过这样的问题,我当时的解决方案是在服务器上面安装完整的office word版本。然后给进程和文件夹访问权限。win 03服务器和win 08服务器权限设置不一样,你看一下子,有疑问可以帮你解决
我本机上安装了完整版的office , 也给了文件夹权限,但一旦发布到IIS(本机)运行,就只能在进程中看到word的进程,而且会一直运行,不停的吃内存,就是不报错
@Euarne: 进程权限有没有给哦,用try catch试一下子
@amityat: 奇怪就是已经try catch了,但扑捉不到错误....
@Euarne: 服务端部署,对于核心地方都要加入日志记录,如果catch不到,那进程肯定“死了”,为什么我要打引号,可能假死,出现这样的情况,你应该显示Dispose,或者垃圾回收。由于office是com组件, 不在托管池,另一方面,说实话,文件大一点,慢的让人忍受不了,还经常报错,可能是我水平太低,你参考下这个 http://www.cnblogs.com/xiaye-liuyu/archive/2007/08/29/873904.html
把应用程序池的用户设置为LocalSystem。
可以考虑第三方库,Office组件这套问题多多~
是,我也已经遇到不少问题了,但由于要转换的文档类型比较多word、excel、powerpoint、visio、project、Publisher),甚至还需要outlook所产生的.msg文件,所以目前只找到这个,你有其他的组件可以介绍嘛
@Euarne: Aspose貌似有一套解决方案,收费的~
你如果开发的时候用了office的组件就会这样,需要服务器也装同样的office。解决方案是用NPOI之类的不需要微软office DLL的东东
问题是需要转换的文档格式比较多,目前暂时未找到其他解决方案
你好,你的问题解决了吗,这几天我也碰到了这个问题,搞了一个星期了,网上能看的也都看了,还是没有解决。。。
我来终结这个问题,IIS 应用池配置的时候 进程模型 标识 选择LocalSystem 然后就可以了