У меня есть собственное приложение веб-службы (ISAPI), которое я создал с Delphi 2010. В настоящее время оно предоставляет только два метода.Первый из них, EchoString, предназначен для того, чтобы дать мне обратную связь о том, что веб-сервис работает правильно, и добавляет пару символов в строку, которую я посылаю ему из моего клиента веб-службы Delphi.Это всегда работает нормально.
Второй открытый метод - это тот, который мне действительно интересен. Я передаю этот метод в строку, содержащую XML-содержимое ClientDataset.Со стороны сервера мой код берет этот XML и вставляет его в набор ClientDataset, после чего передает эти данные в базу данных на стороне сервера.
Я использую компоненты IBExpress (IBDatabase, IBTransaction, IBQuery и т. Д.) для подключения к базе данных InterBase на стороне сервера.
Проблема в том, что, как только я пытаюсь подключить компонент IBDatabase к его базе данных, веб-метод завершается неудачей.Я думаю, что я исключил все другие источники для этой ошибки.Я могу создать и заполнить ClientDataset довольно большим XML-файлом ClientDataSet, отправленным с клиента, который включает в себя вложенные наборы данных без проблем (я использую модуль MidasLib, поэтому ClientDataSet не пытается загрузить DLL).Я могу создавать и настраивать, если не подключаться, базу данных IBD и ее различные компоненты.Опять без проблем.Как только я устанавливаю свойство Connected компонента IBDatabase в True изнутри веб-службы, происходит сбой.
Я запускаю IIS 7.5 под 64-битной версией Windows 7 (на моей машине разработки).Я попытался предоставить права полного доступа для всех (а также для IIS_IUSRS) как конкретной библиотеке DLL ISAPI, так и всему каталогу, в котором находится веб-служба.Это не решило проблему.
Я подозреваю, что это полностью проблема привилегий с IIS 7. Что я могу сделать, чтобы разрешить моей веб-службе ISAPI подключаться к клиентскому API InterBase, чтобы я мог использовать Интернетсервис для записи на сервер базы данных?'' '' '' '' '' '
Post Script: похоже, что соединение с Interbase из Web-сервиса не является проблемой.Я все еще выясняю точную причину, но теперь я смог успешно подключиться к Interbase из веб-службы.Я обновлю этот пост, как только узнаю причину, но этот вопрос больше не действителен.'' '' ''
Я отмечаю ответ Боба как правильный.Строка подключения была неправильной.На самом деле (и это смущает, но я бы скорее смутился, чем ввел в заблуждение), я получил предложение с .
Я сохранил информацию о своем соединении в строках ресурсов.Я сделал назначение в с предложением .Имя строки ресурса для свойства DatabaseName было DatabaseName.Предложение с привело к тому, что свойство DatabaseName было присвоено себе вместо значения в строке ресурса.Я исправил проблему, предварительно указав строку ресурса DatabaseName с именем модуля (т. Е. DatabaseName: = IBModUnit.DatabaseName;).