迷路伯乐

宿命以他自己的方式,实现我们的愿望,为的是展现给我们这些愿望之外的东西

立即发现了BlogEngine.net 1.4.5 一个严重的 bug

| 0 comments

更新:BeZ 为 Miller 为 BlogEngine 制作的最新优化版本,访问此页面阅读详细信息并下载 BeZ。

刚刚升级完成,以为一切顺利,但是在我的本地运行正常的 1.4.5 上传到主机之后,RSS 订阅出现错误,检查之后发现 1.4.5 在处理 RSS 的时候,多了一项内容最后修改时间的通知,但是就是因为增加了这一项通知而导致错误,仔细检查调用的地方,发现错误来自于没有对服务器时区偏移进行处理。由于我的主机和国内的时差是15小时,在通知时间的时候这个时间超出了服务器的时间,导致错误。这个错误会发生在所有服务器时差设置值为正数的情况下。

解决方法也简单,[more]修改内核,找到 \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 给你。

Leave a Reply

Required fields are marked *.

*


* 2 = 16