经过一夜的折腾,总算把站点上的WIKI搭上了,

在首页上有WIKI首页的连接,因为考虑到WIKI的内容的问题,所以,当前需要注册才能访问,点击"WIKI主页",进入之后点击注册即可进行WIKI发布,欢迎发布哈,现在我没有开放文件上传的功能,主要是因为站点的空间不是很多,上传太多我受不了啊。

站点使用的是BlogEngine.NET,而集成的WIKI是ScrewTurn Wiki,这个东西是个纯ASP.Net2.0的开源WIKI。BlogEngine.NET站点上的WIKI就是集成的这个。在BlogEngine.Net上面有一位仁兄问道这个问题,答复是直接集成,前提条件是需要设置WIKI的目录未虚拟目录,这哪成啊,我的web站点服务器不是我操控,废了。所以只能从源代码上入手了。

看到了ScrewTurn的源代码的时候,只有一句话,真是名不副实的东西太多了。ScrewTurn Wiki如果说是成熟,也勉强算得上,功能,插件都有了,但是代码质量就有些不敢恭维了,初时一个Settings类整的我的机器差点挂掉,这次真正深入的时候发现另外一个问题:单例类的初始化居然在单例类之外!!!这个初始化就麻烦了,实在Global中初始化了。

整合的步骤如下

  1. 拷贝Global中的函数到主站点的Global里面,关键是函数

    void Application_BeginRequest(object sender, EventArgs e)

    {

    // Extract the physical page name, i.e. MainPage.ashx

    string pageName = System.IO.Path.GetFileNameWithoutExtension(HttpContext.Current.Request.PhysicalPath);

    // Exctract the extension, i.e. .ashx

    string ext = System.IO.Path.GetExtension(HttpContext.Current.Request.PhysicalPath).ToLower();

    // Remove trailing dot, .ashx -> ashx

    if (ext.Length > 0) ext = ext.Substring(1);

    string qs = "";

    try

    {

    // This might throw exceptions if 3rd party modules interefer with the request pipeline

    qs = HttpContext.Current.Request.Url.Query.Replace("?", "&");

    }

    catch { }

    if (ext.Equals("ashx"))

    {

    // Demand the request to Default.aspx

    HttpContext.Current.RewritePath("~/wiki/Default.aspx?Page=" + pageName + qs);

    }

    }

    void Session_Start(object sender, EventArgs e)

    {

    ScrewTurn.Wiki.SessionFacade.Breadcrumbs = new ScrewTurn.Wiki.BreadcrumbsManager();

    }

    注意函数里面的ashx,这个后缀和settings中的配置要一致。默认也是这个。

    在函数Application_Start中增加初始化函数

    ScrewTurn.Wiki.StartupTools.Startup();

  2. 将Wiki的文件拷贝到wiki目录下,复制App_code下的代码到主目录下的App_Code下,修改每个aspx的引用的MasterPage.master的路径为"~/wiki/MasterPage.master".

    源代码中存在一个缺陷,部分ASPX中对Session没有创建,需要手工增加 EnableSessionState="True"。

  3. 拷贝bin下的文件到主目录下的相同目录。

我对源代码做了如下修改

  1. 保持Singleton初始化的时候是自己类初始化自己
  2. 创建的文件不再以cs结尾,修改成.wiki结尾
  3. 所有的目录修正为wiki目录下
  4. 修正加载文件信息的时候文件内容为空的时候出现的异常。
  5. 集成fckeditor到wiki的编辑器,刨除原先的那个非常晦涩的wiki编辑器
  6. 修改Edit.aspx中,无需再输入文件名,文件名自动生成。
  7. 修改展示页面,增加管理功能,页面太多的时候ScrewTurn的管理工具就难了。呵呵。

写一幅字,激励自己一下,哈

看样子还行,哈哈!这句"使作善也"出自《弟子规》,原句是"养子使作善也",这句是典型的教育核心,呵呵,孩子明年二月就要出生了,以前和小飞聊了不少养孩子的事情,现在看样子要开始实践了,哈哈。