Попытка написать базу данных только для чтения - System.Data.SQLite - PullRequest
12 голосов
/ 25 февраля 2010

У меня возникла небольшая проблема, которая, как я думал, была связана с безопасностью, но, оказывается, не может быть, поскольку я сделал почти все ...

В Интернете достаточно информации об этом, но нет ответа на этот вопрос.

Позвольте мне рассказать мои шаги:

  • У меня есть сайт на VS2k8, чтобы при отладке или запуске с Cassini все работало нормально
  • При настройке IIS 7.5 (Win7) для указания на этот веб-сайт и после добавления прав на изменение IIS_IUSRS появляется сообщение об ошибке
  • То же самое с использованием IIS 6.0!

Img: Безопасность файла базы данных из IIS 7.5

alt text
(источник: balexandre.com )

Обратите внимание, что все остальные файлы и папки имеют те же права, что и выше

Полная ошибка:

Log: Executing query on SQLite Database

Message ***************************************
Attempt to write a read-only database
attempt to write a readonly database

Stack Trace ***********************************
at System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at soDatabaseManager.CommitPersonsToKitchenDatabase() in c:\Adwiza\Kitchen\App_Code\soDatabaseManager.cs:line 242

PS Имейте в виду , что это также должно работать с IIS 6 (windows 2003), IIS 7.5 предназначен только для устранения неполадок, поскольку у нас больше контроля над всем ... .

Ответы [ 2 ]

12 голосов
/ 25 февраля 2010

Убедитесь, что учетная запись анонимного веб-пользователя (NETWORK SERVICE или , возможно, что-то еще ), под которой выполняется ваше веб-приложение, имеет доступ на чтение / запись / создание / удаление к папке, в которой находится база данных sqlite.

0 голосов
/ 03 марта 2017

Другой ответ дает мне представление о проблеме, но мое решение было немного другим. Проблема заключалась в том, что у пользователя не было прав на изменение папки и файла .db. Поэтому я даю разрешение пользователю Все (коллективная группа для Прошедших проверку пользователей и Гость ). Разрешения на NETWORK SERVICE (или аналогичные) не решили в моем случае.

Примечание: После изменения IIS необходимо перезапустить, чтобы загрузить выполненное изменение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...