0

目前,我正在使用 SAP Business One SDK。我从另一个团队接受了一些项目。这个项目是一个 SOAP Web 服务。它是用 ASPX 技术编写的,无论如何另一个团队使用标准 DI API 库。这是此解决方案的主要问题,因为它会导致很多内存泄漏问题。

在调用 DI API 的每次操作后的源代码中,我尝试使用垃圾收集器,但不幸的是,这还不够。

Web 服务托管在 IIS 上,我不得不设置一个选项,在一段时间内重新启动它。我知道这不是最好的解决方案,但它确实有效。显然,这种方式会产生很多问题。

我有一个问题。有没有合理的解决方案?或者我将不得不使用 DI Server 重写源代码?

我已经阅读了很多关于此的内容,我在互联网上找到了一些文章。请不要在评论中添加任何链接,因为我很确定我已经阅读了它们。

4

1 回答 1

1

每次使用 DI API 对象时,都必须释放它。否则,它将留在内存中,并会导致您提到的内存泄漏。

释放它们的正确方法是使用 ReleaseComObject。请记住,如果对象为空,您将得到一个异常,因此请先检查它。

if (oDocuments != null)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(oDocuments);
于 2017-11-13T12:36:47.570 回答