Sqlite .NET和实体框架 - "尝试编写只读数据库"

Jud*_*ngo 6 sqlite entity-framework

---编辑---我可以提供任何其他信息来帮助解决这个问题吗?

我正在尝试在.NET WCF Web服务中启动并运行Sqlite和Entity Framework.

当我尝试将任何内容保存到数据库时,我收到错误"尝试编写只读数据库".这是完整的错误信息:

System.Data.EntityException:在提供程序连接上启动事务时发生错误.有关详细信息,请参阅内部异常

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

尝试 在[snip] ..........................
在System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
上编写只读数据库. ..............................>在System.Data的System.Data.EntityClient.EntityConnection.BeginDbTransaction(IsolationLevel isolationLevel)处.位于System.Data.Objects.Object上的System.Data.EntityClient.EntityConnection.BeginTransaction()处的System.Data.Objects.ObjectContext.SaveChanges(布局为acceptChangesDuringSave)的Common.DbConnection.BeginTransaction()位于System.Data.Objects.ObjectContext.SaveChanges()处...

这是我在Web.config中的EF配置(带有换行符以便于阅读):

<connectionStrings>
   <add 
      name="FooEntities" 
      connectionString="metadata=res://*/FooDataModel.csdl|
      res://*/FooDataModel.ssdl|
      res://*/FooDataModel.msl;
      provider=System.Data.SQLite;
      provider connection string='data source=C:\domains\myfoosite.com\wwwroot\FooService\Foo.sqlite'"
      providerName="System.Data.EntityClient" />
<connectionStrings>
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?为什么数据库是只读的?

我试过的一些事情:

  • 确保Web服务可以写入目录和文件.(我尝试将纯文本文件写入与测试相同的目录.)

  • 我在连接字符串中添加了'read only = False'.

Jud*_*ngo 4

事实证明问题出在 IIS 安全设置上。我必须打开脚本写入访问权限,然后它神奇地开始工作。

  • 我想到了。这是 IIS 用户 (IIS_IUSRS) 文件系统上的 Windows 级别写入权限,在我的情况下可以通过主机“WebsitePanel”进行配置。也许它也可以通过 FTP (chmod) 配置,但我没有尝试过。 (2认同)