一夜鏖战,经验无限。
早就把最新的BlogEngine.NET 1.6版下载了下来,由于博客原来采用的是1.5.0.7版,源代码已经被我修改汉化了很多,始终不敢轻易安装升级。今天突然心血来潮,于是先开始了本地部署测试,BlogEngine.NET本身带到编辑器是国外人较喜欢的TinyMCE,但是上传功能很是不方便,所以干脆直接打算换成CKEditor+CKFinder,毕竟国内用户还是用这个的多,说干就干,经历过无数次的失败整合,最终算是搞好了这种完美的组合。
详细步骤后面我会补上,先给出最关键的一步修改,用来解决编辑器的浏览服务器资源时出现的“未知错误 ”提示。
web.config中的
<pages enableSessionState="false" enableViewStateMac="true" enableEventValidation="true"> <controls> <add namespace="Controls" tagPrefix="blog"/> </controls> </pages>
替换成
<pages enableSessionState="true" enableViewStateMac="true" enableEventValidation="true"> <controls> <add namespace="Controls" tagPrefix="blog"/> </controls> </pages>
另一个常见错误就是:“XML request error: OK (200) ” 或 “c00ce514 ” 的提示,解决办法是关闭 HTTP 压缩,很郁闷吧,这个错误也搞晕了我好久。
博客平台版本:BlogEngine.NET 1.6.0.0 我使用的编辑器版本为:CKEditor 3.2 + CKFinder 1.4.3
解压CKEditor 3.2和CKFinder 1.4.3到editors目录,和Tiny_MCE3并列,可以删减语言包和源代码、例子之类的文件进行提速,实际效果不明显。
编辑文件editors\ckfinder\config.ascx
修改身份验证为:
public override bool CheckAuthentication() { return Page.User.Identity.IsAuthenticated; }
在方法public override void SetConfig()中修改上传文件根目录,注意必须以“/”开始,不能使用CS代码里的变量赋值。
BaseUrl = "/userfiles/";
编辑admin/tinyMCE.ascx文件,完全替换为下面的内容。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="tinyMCE.ascx.cs" Inherits="admin_tinyMCE" %> <%@ Import Namespace="BlogEngine.Core" %>
<script type="text/javascript" src="<%=Utils.RelativeWebRoot %>editors/ckeditor/ckeditor.js"></script> <script type="text/javascript" src="<%=Utils.RelativeWebRoot %>editors/ckfinder/ckfinder.js"></script>
<asp:TextBox runat="Server" ID="txtContent" CssClass="post" Width="100%" Height="350px" TextMode="MultiLine" />
<script type="text/javascript"> if (typeof CKEDITOR == "undefined") { document.write("加载CKEditor失败!"); } else { var tinyMCE = CKEDITOR.replace("<%=txtContent.ClientID %>"); CKFinder.SetupCKEditor(tinyMCE, "<%=Utils.RelativeWebRoot %>editors/ckfinder/"); } </script>
编辑admin/pages/Add_entry.aspx文件,用下面的内容替换function AutoSave()方法里的第一句代码。
var content = document.getElementById('<%=txtRawContent.ClientID %>') != null ? document.getElementById('<%=txtRawContent.ClientID %>').value : tinyMCE.getData(); //获取文章内容
主要配置就是上面这些,因为是做完后才写的总结,可能不够详细完整的给予文字说明,望请海涵!
常见错误信息:
XML request error: Internal Server Error (500)
Do you want to see more info?
破解〔This is the demo version of CKFinder. Click here to visit our web site.〕的注释信息: