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

时间:2010-02-25 09:49:47

标签: c# asp.net .net-3.5 sqlite

我遇到了一些我认为与安全相关的问题,但结果却不能像我几乎做的那样......

网上有大量有关此内容的信息,但没有任何答案可以解决问题。

让我告诉我的步骤:

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

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

alt text http://www.balexandre.com/temp/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仅用于故障排除,因为我们可以更好地控制所有内容...

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:0)

另一个答案给了我一个关于这个问题的想法,但我的解决方案有点不同。 问题是用户没有权限修改文件夹和.db文件。 因此,我授权用户所有人经过身份验证的用户访客的集体组)。在我的案例中, NETWORK SERVICE (或类似物)的权限没有得到解决。

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

答案 2 :(得分:-1)

ss ---- enter image description here

您也应该这样做。错误--->无法打开数据库文件 您必须添加一个连接字符串。--“版本= 3;模式= ReadWrite;新建=假;压缩=真;日志模式=关闭;”;