我正在尝试部署一个使用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
无法打开数据库文件。
答案 0 :(得分:0)
我能够解决这个问题,我将在这里为后人记录。我采取了几个步骤来实现这一目标,而且我目前还没有设置环境以便能够一致且快速地重现问题,因此我并不完全确定哪个是实际解决方案。
除了免责声明,以下是我的更改:
我在IIS上创建了一个新的应用程序池和网站,完全在另一个目录上,而不是在" C:\ inetpub \ wwwroot"。我使用了" C:\ Sites \ MySite"部署我的WCF服务和使用它的网站。
我将应用程序池标识帐户更改为新的AD服务帐户。
我将数据库放在Service Web App目录中,位于名为data的目录中。我从目录和数据库文件中删除了所有继承的权限,并为目录和数据库文件提供了服务帐户和Everyone完全控制。
我编辑了sqlite的连接字符串,使其设置为" Journal Mode = Off;"。
我在IIS上停止并启动了应用程序池和WebSite。
此后服务正常运行,我能够访问数据库文件和SQL Server连接。如果我有机会,我会建立某种虚拟网络来复制它,看看我是否能够确切地找出导致错误的原因。