Пожалуйста, помогите, как отладить это!
На моей машине разработки я могу успешно разместить локальную службу WCF, которая использует базу данных SQLIte для своего хранилища.
Я просто скопировал DLL-файл wcf-сервиса, файл базы данных и файл System.Data.SqLite.dll на сервер win 2008. На сервере размещена служба WCF в IIS7.Это работало без сбоев, прежде чем я попытался перейти на хранилище на основе базы данных, поэтому часть WCF.IIS7 не является проблемой.
Пока я грубо проверяю, работает ли служба, просматривая файл .svc службы в Internet Explorer, меня приветствует сообщение SQLiteException (0x80004005): unable to open database
.
Причина этого заключается в том, что местоположение файла базы данных выглядит жестко запрограммированным: когда я помещаю файл в то же местоположение на сервере, что и на компьютере разработчика, служба запускается без ошибок.
Дело в том, что я использовал мастер Add DataSource для генерации кода для доступа к базе данных и указал, что я хочу, чтобы строка подключения была сохранена в качестве параметра, чтобы позже можно было поместить файл базы данных в другой каталог. Я отредактировал файл web.config, чтобы указать новое местоположение файла базы данных на сервере, но, похоже, этот параметр не читается. Другие настройки в нем, относящиеся к службе WCF, прочитаны правильно.
Где я ошибся? Web.config следует ниже.
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
<connectionStrings>
<add name="PrivateMessenger.Properties.Settings.PMDbConnectionString"
connectionString="data source=G:\PrivateMessengerServers\PMdevelopment\Data\PMDb.s3db"
providerName="System.Data.SQLite" />
</connectionStrings>
<appSettings>
<add key="PersistenceDirectory" value="G:\PrivatemessengerServers\PMdevelopment\Data" />
</appSettings>
<system.serviceModel>
...WCF stuff, is read correctly
</system.serviceModel>
</configuration>