2017-11-11 11 views
0

현재 SAP Business One SDK로 작업하고 있습니다. 나는 다른 팀에서 프로젝트를 가져 갔다. 이 프로젝트는 SOAP 웹 서비스입니다. ASPX 기술로 작성되었지만 다른 팀에서는 표준 DI API 라이브러리를 사용했습니다. 이것은 메모리 누수에 많은 문제를 야기하기 때문에이 솔루션의 주된 문제입니다.SAP B1 - SOAP 웹 서비스에 stanard dll 사용

DI API가 호출 될 때마다 소스 코드에서 Garbage Collector를 사용하려고하지만 불행히도 충분하지 않습니다.

웹 서비스는 IIS에서 호스팅되며 일부 시간 동안 다시 시작하는 옵션을 설정해야했습니다. 나는 그것이 최선의 해결책이 아니라는 것을 알고 있지만 그것은 효과적이다. 분명히, 그런 식으로 많은 문제가 발생합니다.

나는 그것에 대해 질문이 있습니다. 합리적인 해결책이 있습니까? 아니면 DI 서버를 사용하여 소스 코드를 다시 작성해야합니까?

나는 이것에 대해 많이 읽었으며 인터넷에서 기사를 발견했다. 주석을 읽은 적이 있으니 주석에 링크를 넣지 마십시오.

+0

필자는 발견 한 문제로 인해 DI 연결을 항상 다른 프로세스에 대기열에 넣었습니다. – Daz

+0

솔루션에 대한 예를 들어 주시겠습니까? 이것은 매우 흥미 롭다. 미리 감사드립니다. –

+0

가장 간단한 방법은 만들려는 업데이트의 XML을 작성하여 파일/데이터베이스 테이블/메시지 대기열 (또는 이와 유사한)에 놓은 다음 콘솔 응용 프로그램이나 서비스를 제공하고 XML을 DI. 거래가 DI의 LoadFromXML 메소드에 적합하다고 가정합니다. 페이로드 데이터와 서비스는 분명 더 정교 할 수 있습니다. – Daz

답변

1

DI API 개체를 사용할 때마다 해제해야합니다. 그렇지 않으면 메모리에 남아 있고 언급 한 메모리 누수가 발생합니다.

릴리스하는 올바른 방법은 ReleaseComObject를 사용하는 것입니다. 객체가 null 인 경우 예외가 발생하므로 먼저 확인하십시오.