문제

저는 델파이 7에서 isapi 웹 서비스를 개발했으며 C# 애플리케이션에서 사용할 수 있도록 서버에 설치해야 합니다.

isapi의 dll을 폴더에 복사하고 서버의 IIS에 가상 디렉터리를 만들었습니다.

브라우저에서 웹 서비스를 호출할 때(http://localhost/webservice/ws.dll) 델파이가 기본적으로 생성하는 웹 서비스에 대한 웹사이트가 나타납니다.C# 애플리케이션에서 웹 참조를 생성하면 위에서 제공한 URL을 사용하여 참조가 정상적으로 로드됩니다.

문제는 C# 애플리케이션을 단계별로 디버깅할 때 델파이 웹 서비스 내부에서 함수를 호출하지만 아무 작업도 수행하지 않는다는 것입니다.웹 서비스는 아무것도 반환하지 않습니다.

이전에 비슷한 문제가 있었던 것으로 기억하며 이를 해결하는 방법은 일부 델파이 dll을 웹 서비스를 설치하는 서버의 system32 폴더에 복사하는 것이었지만 어떤 파일을 복사해야 하는지 기억이 나지 않습니다. 실제로 문제를 해결합니다.

웹 서비스를 사용하면 .net 애플리케이션 내에서 예외가 발생하지 않습니다.그것은 단지 아무것도 하지 않습니다.함수는 아무것도 반환하지 않습니다.

어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

문제는 다음과 같습니다.

내 웹 서비스는 다른 사람의 델파이 웹 서비스를 사용하는 데 사용됩니다.다른 사람의 델파이 웹 서비스를 사용해야 하는 .NET 애플리케이션이 있지만 이를 개발한 사람이 .NET이 지원하지 않는 복잡한 데이터 유형을 사용했기 때문에 이 웹 서비스를 개발해야 했습니다.그래서 번역가 역할을 하기 위해 웹 서비스를 개발해야 했습니다.나는 그 중 .NET 지원 데이터 유형을 사용했고 .NET 응용 프로그램은 다른 사람의 웹 서비스를 사용하기 위해 내 델파이 웹 서비스를 사용했습니다.좀 지저분하지만 다른 사람에게 표준 데이터 유형을 사용하도록 설득할 수는 없었습니다.내 웹 서비스에는 ini 파일에서 다른 사람의 웹 서비스로부터 SOAP URL을 가져오는 루틴이 있습니다.특정 경로에서 해당 ini 파일을 찾기 위해 해당 루틴을 개발했다는 ​​것을 기억하지 못했습니다.

루틴은 다음과 같습니다.

 ifParams:=TIniFile.Create('C:\BancorTranslator\BancorTranslator.ini');
 HostAnula:= ifParams.ReadString('GLOBAL','HOSTANULA','');
 HostDepos:= ifParams.ReadString('GLOBAL','HOSTDEPOS','');
 HostTrans:= ifParams.ReadString('GLOBAL','HOSTTRANS','');
 HostConsu:= ifParams.ReadString('GLOBAL','HOSTCONSU','');

ini 파일이 다른 위치에 있어서 내 웹 서비스가 다른 사람의 웹 서비스를 사용하려고 할 때 내 웹 서비스에 구성된 SOAP URL이 비어 있었습니다.내 웹 서비스가 호스팅되는 동일한 폴더에서 ini 파일을 찾도록 루틴을 변경했는데 이제는 제대로 작동합니다.system32 폴더의 파일을 복사할 필요가 없습니다.그것은 내 엉망이었다.

도와주신 모든 분들께 감사드립니다 ;)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top