一夜鏖战,经验无限。

早就把最新的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” 的提示,解决办法是关闭

博客平台版本: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.〕的注释信息: