更新:BeZ 为 Miller 为 BlogEngine 制作的最新优化版本,访问此页面阅读详细信息并下载 BeZ。
刚刚升级完成,以为一切顺利,但是在我的本地运行正常的 1.4.5 上传到主机之后,RSS 订阅出现错误,检查之后发现 1.4.5 在处理 RSS 的时候,多了一项内容最后修改时间的通知,但是就是因为增加了这一项通知而导致错误,仔细检查调用的地方,发现错误来自于没有对服务器时区偏移进行处理。由于我的主机和国内的时差是15小时,在通知时间的时候这个时间超出了服务器的时间,导致错误。这个错误会发生在所有服务器时差设置值为正数的情况下。
解决方法也简单,修改内核,找到 \BlogEngine.Core\Web\HttpHandlers\SyndicationHandler.cs 里面 SetHeaderInformation 这个函数,将函数的第二行:
foreach (IPublishable item in items)
{
if (item.DateModified > lastModified)
lastModified = item.DateModified;
}
改成
foreach (IPublishable item in items)
{
if (item.DateModified.AddHours(-BlogSettings.Instance.Timezone) > lastModified)
lastModified = item.DateModified.AddHours(-BlogSettings.Instance.Timezone);
}
就能正确处理时区问题了。
该修正不属于MOD的内容,没有包含在刚才提供的MOD中,如果你无法修改内核但又希望解决这个bug,请留言,我发送一个修改过的内核 DLL 给你。