Установка веб-службы isapi для delphi 7

Я разработал веб-службу isapi в delphi 7, и мне нужно установить ее на сервере, чтобы ее можно было использовать в приложении C #.

Я скопировал dll isapi в папку и создал виртуальный каталог в IIS сервера.

Когда я вызываю веб-службу из браузера (http://localhost/webservice/ws.dll) появится веб-сайт веб-службы, которую delphi создает по умолчанию. Если я создаю веб-ссылку в приложении C #, ссылка обычно загружается с использованием указанного выше URL-адреса.

Проблема в том, что когда я шаг за шагом отлаживаю приложение C #, оно вызывает функцию внутри веб-службы delphi, но ничего не делает. Веб-служба ничего не возвращает.

Я помню, что раньше у меня была аналогичная проблема, и способ ее исправить - скопировать некоторые библиотеки dll delphi в папку system32 сервера, на котором я устанавливал веб-службу, но я не помню, какие файлы мне нужно было скопировать, и если это фактически решает проблему.

Использование веб-службы не вызывает никаких исключений внутри приложения .net. Он просто ничего не делает. Функции ничего не возвращают.

Любые идеи?


person Alvos    schedule 23.07.2010    source источник
comment
Чем занимается веб-сервис Delphi? Загружает ли он дополнительные библиотеки DLL? Если да, то какие и откуда? - Джерун   -  person Jeroen Wiert Pluimers    schedule 24.07.2010
comment
Я нашел проблему. Я забыл, что создал процедуру, которая настраивает веб-службу из ini-файла, который должен находиться по определенному пути. Я проверил код delphi (у меня не было возможности сделать это на сервере, поскольку у меня там нет установленного delphi по очевидным причинам), и я увидел там путь delphi. Я поместил ini-файл на место, и теперь он работает нормально. Моя веб-служба фактически использует другую, и проблема заключалась в том, что, поскольку она не могла найти ini-файл, URL-адреса мыла из другой веб-службы были пустыми. Спасибо за помощь.   -  person Alvos    schedule 24.07.2010


Ответы (1)


Проблема заключалась в следующем.

Моя веб-служба используется для использования веб-службы delphi другого парня. Мне пришлось разработать эту веб-службу, поскольку существует приложение .NET, которое должно использовать веб-службу delphi другого парня, но разработчик использовал сложные типы данных, которые .NET не поддерживает. Поэтому мне пришлось разработать свой веб-сервис, чтобы он работал переводчиком. Я использовал в нем типы данных, поддерживаемые .NET, и приложение .NET использует мою веб-службу delphi только для того, чтобы использовать веб-службу другого парня. Это немного запутанно, но мне не удалось убедить другого парня использовать стандартные типы данных. У моего веб-сервиса есть процедура, которая берет URL-адреса SOAP из веб-сервиса другого парня из ini-файла. Я не помнил, что я разработал эту процедуру для поиска этого 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-файл в другом месте, поэтому, когда моя веб-служба пыталась использовать веб-службу другого парня, URL-адрес SOAP, настроенный в моей веб-службе, был пустым. Я изменил процедуру, чтобы искать ini-файл в той же папке, где размещается мой веб-сервис, и теперь он работает нормально. Не нужно копировать файлы в папку system32. Это был мой беспорядок.

Спасибо за вашу помощь ;)

person Alvos    schedule 24.07.2010