【问题标题】:ABCpdfCE7.dll locked by IISABCpdfCE7.dll 被 IIS 锁定
【发布时间】:2011-03-22 22:28:45
【问题描述】:

我在 ASP.Net 中有一个网站,它使用名为 ABCPdf 的第三方应用程序生成 PDF。 ABCPdf 由两个 dll 组成:ABCpdf.dll 和 ABCpdfCE7.dll。 ABCpdf.dll 是非托管 ABCpdfCE7.dll 的 .NET 包装器。

一旦生成 pdf。 ABCpdfCE7.dll 被 IIS 锁定(即无法重命名或删除它),除非我回收应用程序池或重新启动 IIS。这会导致更新我的网站时出现问题,因为我们无法覆盖 ABCpdfCE7.dll。

无论如何要释放在 .Net 中锁定 ABCpdfCE7.dll 的资源吗?每次更新时重新启动 IIS 或回收应用程序池都不是解决方案,因为我有多个网站在上面运行。

我每次都在处理 PDF 库中的对象

Using theDoc As New Doc

    // Generate the pdf

    theDoc.Clear()
End Using

【问题讨论】:

  • 你能把你的代码贴在你使用 PDF 库的地方吗?
  • 为每个站点使用单独的AppPool,无论如何,这只是您长期可能会遇到的一系列问题之一。
  • @Mr.失望我会检查这个解决方案,谢谢
  • 别担心,希望一切顺利。 :)

标签: .net unmanaged abcpdf


【解决方案1】:

ABCpdfCE7.dll 多久更改一次?我想不会太频繁,所以你为什么每次更新都推送它,把它放在一边。

另外,还有一些观察:

回收应用程序池会保留会话,因此它不会对您的用户产生任何影响,如果您正在缓存大量昂贵的资源,那么除了性能之外,并且有人会遇到先发制人的延迟。

ABCPdf,取决于您使用它的方式,会生成一个 Internet Explorer 实例以将 HTML 呈现为 PDF。你可以检查任务管理器,看看 IE 是否在后台运行,如果是,杀死它可以解决你的问题,虽然我不知道你如何避免杀死某人的 PDF 作业。

【讨论】:

  • 是的,不推送 dll 是一种解决方案。我一直在寻找其他东西,以防我们在更新 ABCpdf 时忘记推送它。此外,回收应用程序池不会保留在同一应用程序池上运行的其他网站上的会话
  • @Alexandre:重申一下:给网站自己的AppPool,句号。
  • @Mr.失望:不能使用额外的应用程序池占用更多内存吗?
  • 在您共享内存和工作进程的那一刻 - AppPool 可以拥有固定数量的内存,在这种情况下更糟。应用程序将使用它需要的内存,但会受到可用内存的影响,这可能会导致应用程序池自动重新启动。在这里,记忆是您最不必担心的问题。
猜你喜欢
  • 2011-05-08
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多