【问题标题】:Attempt to write a read-only database - System.Data.SQLite尝试编写只读数据库 - System.Data.SQLite
【发布时间】:2011-01-20 22:35:48
【问题描述】:

我遇到了一些我认为与安全有关的问题,但事实证明不可能像我所做的几乎所有事情一样......

网络上有大量关于此的信息,但没有任何解决问题的方法。

让我告诉我的步骤:

  • 在 VS2k8 上有一个网站,当我调试或从 Cassini 启动时,一切正常
  • 将 IIS 7.5 (Win7) 设置为指向该网站并添加 IIS_IUSRS 修改权限后出现错误
  • 使用 IIS 6.0 也是如此!

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


(来源: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 仅用于故障排除,因为我们对所有内容都有更多控制权...

【问题讨论】:

  • 你检查了文件的只读状态吗?
  • 是的,我做到了,它不是只读的,IIS 中的文件不是:-/

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


【解决方案1】:

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

【讨论】:

  • 在 IIS 7.5 下您可以选择使用 USER 或 Application,我的匿名用户是 IUSR(如您所见,它存在于安全面板中)并且我在使用应用程序池时遇到相同的错误身份(img:balexandre.com/temp/2010-02-25_1150.png
【解决方案2】:

另一个答案让我对这个问题有所了解,但我的解决方案有点不同。 问题是用户没有修改文件夹和 .db 文件的权限。 所以我授予用户 Everyone 权限(Authenticated UsersGuest 的集体组)。 NETWORK SERVICE(或类似的)的权限在我的情况下没有解决。

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

【讨论】:

  • 对我来说,这是应用程序池标识,但 +1 建议重新启动 - 但在我的情况下,这只适用于应用程序池本身。并非所有 IIS。
【解决方案3】:

ss----enter image description here

您也应该这样做。错误为--->无法打开数据库文件 必须添加连接字符串。--"Version=3;Mode=ReadWrite;New=False;Compress=True;Journal Mode=Off;";

【讨论】:

  • 文本图像是个坏主意(它们无法搜索,外部网站有时会将它们删除),而是复制并粘贴文本。
猜你喜欢
  • 2014-12-07
  • 1970-01-01
  • 2023-03-09
  • 2021-11-07
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
相关资源
最近更新 更多