使用BlogEngine.Net博客系统有两年时间了。官方的最新版本已经出到了2.5。但它是基于.net4.0的。也就是说服务器必须安装.net4.0,运行环境必须选择4.0。出于移植性的考虑。我决定将我的博客升级到2.0。BlogEngine.Net2.0是继续.net2.0的。虽说必须安装.net 3.5,但毕竟运行环境还是2.0。
由于BlogEngine.Net是英文版本的,对本地化做的还不够,所以在很久以前我就选择了博易www.blogyi.net作为自己的博客程序。大家可以到博易官方去下载最新版http://www.blogyi.net/download/。这里是博易和BlogEngine.net的版本对照http://www.blogyi.net/download/release-mapping/。
我原先使用的是博易1.9版本,也就是对应BlogEngine.NET的1.5版本。
其实升级非常的简单,方法如下:
1.登录旧版本博客后台,导出BlogML.xml(备用)毕竟没有不是不同博客程序的转换,所以相对比较简单,只要导出备份文件即可。待用。
2.备份旧版本博客App_Data目录下的file文件夹,这个文件夹是存储博客图片以及文件的文件夹,待用。当然最好还是备份整个App_Data目录,如果升级不成功还可以还原。
3.备份整个旧博客(不是必须的,但可以防万一)。
4.下载博易博客http://www.blogyi.net/download/ 首先下载BlogYi.NET v2.0 源程序压缩包文件 5,992KB ,BlogYi.NET v2.0 源程序压缩包文件 5,992KB (源码不是必须的,在后面我会提到为什么要下载源码)
5.上传BlogYi.Net2.0程序,上传后边可以输入网址运行。
6.还原数据,登录新博客后台,找到 设置->导入&导出 将先前备份好的BlogML.xml导入。如果顺利,那么你的博客就升级完毕了。
但是虽然说已经升级完毕,随之带来的问题却不小。如果你小心留意你会发现升级完毕后的文章的显示地址发生了变化。在旧版本的博客中默认命名博客文章地址是域名+时间日期+文章标题的UrlEncode编码+.aspx,新版本却使用了域名+时间日期+文章标题的HtmlEncode+.aspx。这看上去是一个很小的问题,但他会大大缩减你博客的访问量。这是为什么呢,这因为博客的流量大多来自搜索引擎,搜索引擎收纳的是博客的链接地址,链接地址发生了变化,那么就没办法使用原先被搜索引擎收纳的地址。以前的文章就变成了空地址。怎么解决这个问题呢?这就需要用到博客的源码了。
方法如下:
1.用VS2010打开项目源码,找到BlogYi.Net-2.0-Source\BlogEngine\DotNetSlave.BusinessLogic\Utils.cs
找到
public static string RemoveIllegalCharacters(string text) { if (string.IsNullOrEmpty(text)) return text; text = text.Replace(":", string.Empty); text = text.Replace("/", string.Empty); text = text.Replace("?", string.Empty); text = text.Replace("#", string.Empty); text = text.Replace("[", string.Empty); text = text.Replace("]", string.Empty); text = text.Replace("@", string.Empty); text = text.Replace("*", string.Empty); text = text.Replace(".", string.Empty); text = text.Replace(",", string.Empty); text = text.Replace("\"", string.Empty); text = text.Replace("&", string.Empty); text = text.Replace("'", string.Empty); text = text.Replace(" ", "-"); text = RemoveDiacritics(text); text = RemoveExtraHyphen(text); return HttpUtility.HtmlEncode(text)
.Replace("%", string.Empty); }
将
return HttpUtility.HtmlEncode(text).Replace("%", string.Empty);
改为
return HttpUtility.UrlEncode(text).Replace("%", string.Empty);
然后重新编译BlogEngine.Core项目,上传替换BlogEngine.Core.dll。
这就解决了升级后,博客文章链接地址发生变化的问题。