Я создал веб-сервис, вызывающий SQL хранимые процедуры. Фактически это замена предыдущей конечной точки SQL, использующей те же SP, что и конечная точка. Веб-сервис вызывается программой Win32 без HTTPRIO, использующей сервис напрямую, например:
var Service : IApp3TWS;
Terminal: TTerminal;
begin
Service := IApp3TWS1.GetIApp3TWS();
Terminal := Service.WS_TerminalGet(trm);
..
..
end;
IAPP3TWS - это файл pas, созданный импортером WDSL.
Я не являюсь передача любых учетных данных, таких как имя пользователя или пароль. Тем не менее, он работает безупречно с одним пользователем, но не с большим количеством пользователей, одновременно обращающихся к одной и той же службе.
Webservice создается мастером Delphi Webservice и помещается в оболочку TService, также создаваемую с помощью мастера Delphi, и, наконец, устанавливается на сервере (фактически * SQL) как служба (http.sys), а также имя пользователя и пароль, используемые для разрешения службе «входить в систему как служба», также разрешают доступ к базе данных и таблицам SQL. И, как я уже сказал, все работает правильно, когда одновременно вызывается только одна программа Win32.
Когда я пытаюсь вызвать одну и ту же службу с двумя или более программами win32, на разных машинах обычно проходит одна, тогда как другой (или другие) получает различные ошибки, такие как:
Нарушение прав доступа. Один также получил ADOStoredPro c .Параметр не найден ...
Кто-нибудь знает, что я делаю не так?