如何从IIS托管的WCF服务访问SQLite数据库?

时间:2017-04-23 22:28:43

标签: asp.net sql-server sqlite wcf iis

我正在尝试部署一个使用SQLite DB来读取某些数据以及连接到另一个数据库(MS SQL)的WCF服务。服务本身由在同一服务器上运行的ASP网站使用。

问题是只有我的用户才能完全使用网站和服务。其他每个用户似乎都无法打开sqlite数据库文件。

从IIS访问sqlite数据库需要什么样的权限或特殊访问权限?

应用程序池使用域帐户进行设置,以便可以授予对MS SQL数据库的访问权限(集成安全性)。

帐户可以访问存储数据库的文件夹。我甚至试图让Everyone和所有用户都无法访问它。

我觉得我错过了一些明显的东西,但我无法弄清楚是什么......

更新:错误如下:

System.Data.Entity.Core.EntityException

EntityFramework.dll中出现'System.Data.Entity.Core.EntityException'类型的异常,但未在用户代码中处理

其他信息:基础提供商在Open上失败。

内部异常:

System.Data.SQLite.SQLiteException

无法打开数据库文件。

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题,我将在这里为后人记录。我采取了几个步骤来实现这一目标,而且我目前还没有设置环境以便能够一致且快速地重现问题,因此我并不完全确定哪个是实际解决方案。

除了免责声明,以下是我的更改:

  1. 我在IIS上创建了一个新的应用程序池和网站,完全在另一个目录上,而不是在" C:\ inetpub \ wwwroot"。我使用了" C:\ Sites \ MySite"部署我的WCF服务和使用它的网站。

  2. 我将应用程序池标识帐户更改为新的AD服务帐户。

  3. 我将数据库放在Service Web App目录中,位于名为data的目录中。我从目录和数据库文件中删除了所有继承的权限,并为目录和数据库文件提供了服务帐户和Everyone完全控制。

  4. 我编辑了sqlite的连接字符串,使其设置为" Journal Mode = Off;"。

  5. 我在IIS上停止并启动了应用程序池和WebSite。

  6. 此后服务正常运行,我能够访问数据库文件和SQL Server连接。如果我有机会,我会建立某种虚拟网络来复制它,看看我是否能够确切地找出导致错误的原因。