IIS64位兼容32位Sqlite设置方法

今天花了一天的时间研究了一下SQLite,以取代一些轻量级项目中使用的Access数据库。原因一方面是想尝试一下这个收到追捧的轻量级文件数据库,另一方面是想使用对象关系映射(ORM),SQLite的支持比Access更好一些。

先做了Demo,做了简单的select操作,不过根据经验,.Net应用程序在部署时总会遇到这个那个的问题,果然部署到服务器上时,出现了一系列的问题。至于SQLite如何使用,不在本文的讨论范围内。

我们本次讨论的是在本机开发和调试全部完成后,部署到服务器上(Windows Server 2008 R2)时的时候出现的问题。

SQLite应用的部署步骤和普通应用是一样的(本应该是如此,否则如何轻便呢?),但可能会遇到一系列的问题,以下问题都是我在部署时亲身经历的问题,测试用服务器是一台全新部署的Windows Server 2008 R2。

1、命名空间“System.Data”中不存在类型或命名空间名称“SQLite”(是否缺少程序集引用?)

请检查是否把System.Data.SQLite.dll放到了bin目录下。本机因为添加了SQLite安装目录下的dll引用因此可以正常调试。> SQLite.NET下载页面

2、未能加载文件或程序集“System.Data.SQLite.Linq”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。

以上问题是由于服务器未安装.Net Framework 4.0(或许应用程序池选择了低版本也会出现,未经测试) ,而.Net Framework版本也是比较重要的细节,可以发现在下载SQLite.NET时候,分的比较严格,for .Net Framework 3.5SP1和4.0是分开的,因此必须选用和目标框架版本一致的版本。安装完.Net 4.0后,记得切换IIS中应用程序池的版本。

3、未能加载文件或程序集“System.Data.SQLite.dll”或它的某一个依赖项。找不到指定的模块。

该问题出现的原因是没有安装Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)(当然如果你不是64位系统请安装for x86)。

4、Attempt to write a read-only database

请检查数据库所在目录的权限,加入IIS_IUSRS组的完全控制权限(理论上写入即可)。网上查到说添加Users组,事实上正确的做法是添加IIS_IUSRS组,这个才是IIS工作进程所使用的组,应该与Users是子集的关系,所以使用IIS_IUSRS肯定会更安全一些。

5、未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。

这个问题长的和第3个问题很像,只是离胜利更进一步了。产生这个问题的原因是使用了错误版本的System.Data.SQLite.dll,即在x64的服务器上使用了x86的dll(反之亦然),这个问题倒是有2个解决方法。第一个也是我所推荐的,使用正确版本的dll;第二个方法是在IIS应用程序池的高级设置中,“启用32位应用程序”一项设置为True。可能你再这么做之后,又回到了第三个问题,别担心,x86 Visual C++ Runtime装上了就好了。

注意:如果选择了启用32位应用程序,那么就只能使用32位的dll,一个应用程序池中是不能32位和64位混用的。

6、没有报任何错,但是访问SQLite的速度很慢,哪怕是简单的Select操作。

测试数据是只有2个字段,10条数据的SQLite3数据库。很明显这不是应有的表现,经过一系列的测试和排查,发现该问题是由于目录权限造成的。当你只进行查询之类的只读操作时,是不会报错的。解决方法参照以上第4条即可。
至于产生的原因,看到网上说SQLite在操作时是需要创建临时文件的,可能是权限受限后出现了些许问题了吧。

以上6个问题是我部署时遇到的问题,一步步循序渐进,最终赢得了胜利。更加深入的问题后续遇到了继续补充吧。相信很多人都会遇到相同的问题,也相信这篇文章能够解决大部分人的问题。

我也是新人,我的职业也不是程序员,如有不足指出,希望高人指教,谢谢。

时间: 2024-08-05 06:39:04

IIS64位兼容32位Sqlite设置方法的相关文章

ubuntu 64位设置兼容32位 for ADB 命令无法运行

在虚拟机上Ubuntu系统里安装ADT开发工具,配置好环境后导入Android工程报错: 找不到Adb命令: ubuntu 12.04 64位设置兼容32位的实现REF:http://www.2cto.com/os/201210/159883.html My configure is as follows: 1. **Newwork setting:etc/apt/apt.conf2. sudo echo "deb http://archive.ubuntu.com/ubuntu/ raring

System.Data.SQLite兼容32位和64位问题

SQLite版本分的很详细,本机是64位在32位会出现问题,经过搜索找到解决方案. 这是我以前写的32位在我现在的机子上的运行报错. 类似这样的. 将当前说明文档的目录下的x64.x86目录和System.Data.SQLite.dll文件复制到您的应用程序根目录中(注意更新引用,引用System.Data.SQLite.dll即可,两目录中的不需要引用,但发布时需打包).如果是WEB网站,则复制到Bin目录下即可,发布时,也注意x64和x86一起打包发布 注意,当前的System.Data.S

iOS上应用如何兼容32位系统和64位系统

在苹果推出iPhone5S时,64位的应用就走到了眼前.当时就看见苹果官方资料宣布iOS7.x的SDK支持了64位的应用,而且内置的应用都已经是64位. 我记得自己刚刚接触电脑时还有16位的系统,指针的寻址范围还是16位的.当年用TurboC时,还要根据应用的大小选择是tiny模式还是其他.后来很长一段时间使用32位的模型编程,4G是牢牢记住的一个边界条件.而现在,64位走到了眼前. 就如同16位转向32位一样,硬件肯定是最先推出的,SDK也会跟进,然后各种第三方的应用才会逐步跟进,这个过程一般

Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统 调试原来的工程,由于在其中引用了"SQLite"的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码 代码如下: <Reference Include="Syst

Linux 系统环境搭建 之 ubuntu 64位系统兼容32位

有些安装了64位系统Ubuntu,但是有些库需要在32位系统才能执行下面提供了一些在64位系统安装32位库的方法 仅仅举个例子,如果有不同的库可以模仿以下写法去安装. sudo apt-get install ia32-libs sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386 sudo apt-get install g++-multilib apt-ge

oracle 11g 64位安装32位客户端和PL/SQL

这个你需要安装一个32位的oracle客户端才能使用plsql,但是此时sqlplus就不能使用了,呵呵 . 我又试了以下方法,成功了,哈哈 1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0) 下载地址:http://www.oracle.com/technetwork/cn/topics/winsoft-095945-zhs.html 下载instantclient-basic-win32-11

如何在WIN2008或WIN2012 64位系统安装32位SQL2000

如何在WIN2008或WIN2012 64位系统安装32位SQL2000 在日常服务器,云服务器或VPS中,因尔特网络工程师遇到部分使用了WIN2008 或WN2012 64位系统的用户需要安装SQL2000数据库软件,但是在安装过程提示该数据库软件与系统不兼容的字样,在这里,我们建议你可以改为安装MSSQL2005或MSSQL2008即可. 如果你仍然需要安装SQL2000的话,方法如下: 第一个方法:另外下载MSSQL2000 64位数据库软件安装即可.不过这个方法比较费时.笔者建议你采用第

%1不是有效的 win32应用程序(64位转换32位)

phpmyadmin打开时候显示 HTTP500内部服务器错误,用火狐浏览器显示的是%1不是有效的 win32应用程序.谷歌一下,终于找出问题,原来是windows2003 64位的操作系统和32位IIS的问题..最终找到解决方法如下: 要运行 32 位版本的 ASP.NET 2.0,请按照以下步骤操作:1. 单击"开始",单击"运行",键入 cmd,然后单击"确定". 2. 键入以下命令启用 32 位模式: cscript %SYSTEMDRI

win7_oracle11g_64位连接32位PLSQL_Developer

已经装好的64位Oracle数据库 window7_64位的操作系统 PLSQL_Developer 9.0以上版本(目前只有32位的):下面有下载连接! 官方的 instantclient-basic-win32-10.2.0.5 文件:下面有下载连接! 百度经验:jingyan.baidu.com 方法/步骤 1 下载PLSQL_Developer地址: http://pan.baidu.com/share/link?shareid=3768883331&uk=3557941237 下载in