我的Web应用程序生成pdf文件,并通过电子邮件或传真给我们的客户.不知何故,IIS6保留了该文件并阻止任何其他请求它声称旧的'..该进程无法访问文件'xxx.pdf',因为它正被另一个进程使用.
当我回收应用程序池时,一切正常.有谁知道为什么会这样,我怎么能阻止它.
谢谢
正如大家所说,在读取/写入PDF文件时,请在打开的任何IO对象上调用Close
and Dispose
方法.
但我想你已经加入了第三方组件?为你做PDF写作?如果是这种情况,您可能需要查看供应商和/或其文档,以确保您按照供应商的预期方式进行操作.不要相信你从其他人那里得到的黑匣子,除非它已证明了自己.
另一个要查看的地方可能是在对PDF文件的多个Web请求期间发生的情况,您确定该文件不是从多个位置同时写入的吗?例如,2-3个同时生成PDF的请求?或PDF生成过程中的2-3页?
最后,您可能需要检查异常日志,以确保没有任何内容崩溃/线程退出,并且在没有注意到的情况下保持文件句柄处于打开状态.它在多个线程场景中发生了很多,有时线程崩溃和退出 - 这可能会发生,特别是如果你使用第三方组件,他们可能会执行一些魔术,你永远不会知道.