除了 IIS 上的“无法打开数据库文件”之外,我似乎无法从 SQLite 中得到任何东西。我确信 SQLite 的错误信息和 Oracle 的一样粗暴。
- 在 Visual Studio 2010/IIS Express 中预部署我可以读取和写入文件。
- 当我尝试使用部署到 IIS7.5 的同一个 VS2010 项目读取/写入它时,所有“创建”、“读取”和“写入”命令都失败了。
- 当我通过项目部署数据库文件并尝试读取它时,也会发生同样的情况。
- 我已将
Full control
App_Data 和数据库文件的访问权限授予以下用户:IIS_IUSRS
、IUSRS
、DefaultAppPool
和Everyone
.
我看过:
SQLite 问题“无法打开数据库文件”(该问题自动为用户消失)和许多其他类似问题,其中大部分通过更改权限解决,更改为可写目录(App_Data应该是可写的,不是吗?)或将相对路径更改为绝对路径(|DataDirectory|
应该解析为)。
<connectionStrings>
<add name="sqlite" connectionString="Data Source=|DataDirectory|\datatables.sqlite;Version=3;" />
</connectionStrings>
我错过了什么吗?
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>Unable to open the database file</ExceptionMessage>
<ExceptionType>System.Data.SQLite.SQLiteException</ExceptionType>
<StackTrace>
at System.Data.SQLite.SQLite3.Open(String strFilename, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool) at System.Data.SQLite.SQLiteConnection.Open() at AjaxSource.Models.Database.query(String sql, Dictionary`2 parameters) in D:\Tools\Dropbox\Projects\myprojects\AjaxSource\AjaxSource\Models\Database.cs:line 48 at AjaxSource.Models.aaDataModel..ctor() in D:\Tools\Dropbox\Projects\myprojects\AjaxSource\AjaxSource\Models\aaDataModel.cs:line 18 at AjaxSource.Controllers.API.TableDataController.Get() in D:\Tools\Dropbox\Projects\myprojects\AjaxSource\AjaxSource\Controllers\API\TableDataController.cs:line 15 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
</StackTrace>
</Error>