大家都知道 Bitrac 一直有一个问题就是在 Medium Trust 下无法正常运行。一直以来我都在找这个问题的解决方案,自从 C#-SQLite 项目出现以后,这个问题已经不再是大问题了,经过这几天的调试和修改,我已经可以正式宣布,SQLite 在 Medium Trust 模式下运行啦。
我已经解决的问题:
不过现在还有两个问题:
如果你对 C#-SQLite 也感兴趣,可以去他的项目主页看看,暂时说这么多。研究 LIKE 中文查询去了。
LIKE 中文查询的问题已经解决,下一步就是测试咯。
以前有朋友反馈过在 Mono 下无法运行 Bitrac,这两天测试 Bitrac 的兼容性的时候顺便也测试了一下 Bitrac 在 Mono 下的表现,系统嘛还是选择我最喜欢的 Archlinux,Web 服务器就用 Lighttpd 了,用 FastCGI-Mono-Server 来跑 Bitrac,服务器的配置方法,我去年年初就发过了,这里就不再累赘。
装好服务器,传好 Bitrac,运行,哦也,错误。SQLite 库不行,到他主页一看哦,应该用可管理的那个库,而不是集成的库,换,再运行还是错误,这次是路径有错误了,唉,不规范代码害死人了,把所有不规范的代码都换了,然后把权限设置好,哈哈,成功运行,不过速度好慢啊,第一次启动时间竟然需要 3 秒,稳定运行后,每个页面都要 50 毫秒左右,性能比 IIS 下面要低两倍。看来用 Linux 跑 .NET 的应用还是很不现实啊。
另外就是 SQLite 数据库连接字符串的 Pooling=True 问题了,发现打开这个以后,会造成数据库文件被锁定,很容易出现错误,虽然开启那个选项可以提高两毫秒的速度,但是为了稳定性,还是关闭了吧。下个版本很快发布,到时候有兴趣和条件的朋友可以试试在 Mono 下跑 Bitrac 了。呵呵
另外就是有些朋友的主机无法运行自动运行程序,我考虑在自动更新功能里面加入本地自动更新功能,就是你在我这里下载自动更新包以后上传到你的服务器更新,一切为了方便嘛,哈哈。
Bitrac 程序内是直接引用了 System.Data.SQLite 这一命名空间,因为 ASP.NET 的特性,如果单独升级 SQLite 的库文件不重新编译程序那么程序运行时肯定无法找到所需要的程序集,因为版本号有了变化,而 Bitrac.Auto.dll 自动升级程序集也需要引用 SQLite 的库,但是我并不希望每次 SQLite 的库更新 Bitrac.Auto.dll 也要更新,那样会造成太多的不便,这时候就需要使用 ASP.NET 2.0 的一个新特性了,那就是 DbProviderFactories,Bitrac.Data.dll 依然使用旧的方法直接引用 SQLite 库。
首先在 web.config 文件里面增加:
- <system.data>
- <DbProviderFactories>
- <remove invariant="System.Data.SQLite"/>
- <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
- </DbProviderFactories>
- </system.data>
C# 使用以下代码就可以了:
- DbProviderFactory oFact = DbProviderFactories.GetFactory("System.Data.SQLite");
- using (DbConnection oConn = oFact.CreateConnection())
- {
- oConn.ConnectionString = "数据库连接字符串";
- oConn.Open();
- oConn.Close();
- }
其实 ASP.NET 程序支持多种数据库使用的也是这个方法。
Bitrac 使用的 SQLite 数据库建表的时候忘记了加入忽略大小写的参数。所以会造成很多不便,前一段时间使用中倒是没有发现什么问题,不过问题肯定会出现的。
今天凑空把数据库整理了一下。实现了忽略大小写,其实也很简单就是建表的时候为目标字段添加 "COLLATE NOCASE" 就可以了。不过 SQLite 没有直接修改字段属性的语句,所以我就写了一些 SQL 语句以达到平滑升级的目的。
下面我把升级的 SQL 语句打包上传上来,点击下载
升级步骤如下:
另外特别感谢使用了内测版本并汇报 BUG 的朋友汤尼尔。
这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么翻译不当的地方希望大家指出,毕竟我的英文水平实在很差。 SQLite 包括以下五个时间函数:
上述五个函数需要一个日期时间字符串做参数,后面可以跟零到多个修正符参数。而 strftime() 函数还需要一个日期时间格式字符串做第一个参数。
来看看有更新没
因为这个博客系统yahoo google都收录很好 才想说admin能不能做个
垃圾评论没啥好办法,要不就是更新关键字列表勤快点,要不就把评论
草泥马,山西网通赚钱不要脸!!!
最近貌似总有垃圾评论被发上来,博主考虑解决下。
我之前也遇到了这个情况,好像是由于数据库没有写权限的原因,加了
太感谢你了,我先去鼓捣鼓捣
安装了blog程序,可是一直登录后台出现验证码错误的问题,不知为何
啥CMD命令啊。分享下!
为什么用谷歌浏览器。点订阅的时候,出现了一推代码呢。
版权所有©2005-2010 | 系统:Bitrac | 模版:BtTheme | 图标:Led Icon Set | 空间域名:易联网络,光辉互联 | 晋ICP备09006899号