Вопрос

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

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

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

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

Я помню, что у меня была похожая проблема раньше, и способ исправить его, чтобы скопировать несколько Delphi DLL в папку System32 сервера, в которой я устанавливаю веб-сервис, но я не помню, какие файлы, которые мне нужно копировать и если это на самом деле решает проблему.

Потребление веб-службы не бросает никакого исключения внутри приложения .NET. Это просто ничего не делает. Функции ничего не возвращают.

Любые идеи?

Это было полезно?

Решение

Проблема была следующей.

Мой веб-сервис используется для употребления веб-службы 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 в другом месте, поэтому, когда мой веб-сервис пытался потреблять веб-сервис другого парня, настроен Web Puy, настроенный в моем веб-сервере, был пустым. Я изменил рутину, чтобы искать файл INI в той же папке, где проходит мой веб-сервис, и сейчас работает нормально. Не нужно копировать какие-либо файлы в папке System32. Это был мой беспорядок.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top