尝试编写只读数据库 – System.Data.SQLite

我有一个问题,我认为这与安全有关,但事实certificate不能像我几乎做的一切……

网上有大量关于此的信息,但没有解决问题的答案。

让我告诉我的步骤:

  • 在VS2k8上有一个网站,当我调试或从Cassini开始时,一切正常
  • 当设置IIS 7.5(Win7)指向此网站并添加IIS_IUSRS修改权限后,我收到错误
  • 使用IIS 6.0也一样!

Img:IIS 7.5中的数据库文件安全性

替代文字http://sofzh.miximages.com/c%23/2010-02-25_1028.png

请注意,所有其他文件和文件夹具有与上述相同的权限

完整的错误是:

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仅用于故障排除,因为我们可以更好地控制所有内容……

确保Web应用程序执行的匿名Web用户帐户(NETWORK SERVICE或其他内容 )具有对sqlite数据库所在文件夹的读/写/创建/删除访问权限。

另一个答案给了我一个关于这个问题的想法,但我的解决方案有点不同。 问题是用户没有权限修改文件夹和.db文件。 所以我向用户EveryoneAuthenticated Users and Guest的集体组)授予权限。 在我的案例中, 网络服务 (或类似物)的权限没有得到解决。

注意:更改后,必须重新启动IIS才能加载所做的更改。