小菜放假回家有几天了,觉得应该做些有意义的事情.
所以希望能把小菜梦游Discuz!NT系列坚持写下去,希望给广大小菜们,包括小菜自己一些帮助.
小菜想通过第一篇,铺垫之后的文章,这也是Discuz!NT的基础篇.
本篇主要涉及Discuz!NT中的关于配置文件路径相关的处理方法.

Discuz!NT2.0的安装
    1)先从官网 http://www.discuznt.com/opensource.html 下载源代码
       解压,现在 D:\Discuz\ 文件夹中有下图内容.这便是Discuz!NT2.0的源代码了.
       其中Discuz.Web便是我们的论坛位置.
       Discuz.Web中包含两个文件DNT.config,Web.config和一个config文件夹,里面存放着许多配置文件
       如:general.config,urls.config.....等等
        小菜梦游Discuz!NT (第一篇 开篇有益)
    2)我们将DNT.config和Web.config 剪贴到系统主目录下.默认在C:\Inetpub\wwwroot\下
    3)为D:\Discuz\Discuz.Web\ 建立虚拟目录,虚拟目录名为 bbs (当然你可以设为其它名称)
    4)打开DNT.config  

小菜梦游Discuz!NT (第一篇 开篇有益)<?xml version="1.0"?>
小菜梦游Discuz!NT (第一篇 开篇有益)
<BaseConfigInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance">小菜梦游Discuz!NT (第一篇 开篇有益)                                        
    
<DbConnectString>Data Source=(local);User ID=sqlname;Password=sqlpassword;
        Initial Catalog=databasename;Pooling=true
</DbConnectString>
小菜梦游Discuz!NT (第一篇 开篇有益)  
<TablePrefix>dnt_</TablePrefix>
小菜梦游Discuz!NT (第一篇 开篇有益)  
<ForumPath>/</ForumPath>
小菜梦游Discuz!NT (第一篇 开篇有益)  
<FounderUid>0</FounderUid>
小菜梦游Discuz!NT (第一篇 开篇有益)  
<DbType>SqlServer</DbType>
小菜梦游Discuz!NT (第一篇 开篇有益)
</BaseConfigInfo>
    将<ForumPath>/</ForumPath> 修改为<ForumPath>/bbs/</ForumPath>

接下来我们开始讨论,Discuz!NT2.0对于配置文件的路径处理相关问题

问题1?   我们在代码中如何获取DNT.config配置文件呢?         很简单 "/DNT.config" 看下面解释
            我们可以在任何地方新建一个html文件          
小菜梦游Discuz!NT (第一篇 开篇有益)<html>
小菜梦游Discuz!NT (第一篇 开篇有益)
<head></head>
小菜梦游Discuz!NT (第一篇 开篇有益)
<body>
小菜梦游Discuz!NT (第一篇 开篇有益)    
<href=”/DNT.config”>配置文件</a>
小菜梦游Discuz!NT (第一篇 开篇有益)
</body>
小菜梦游Discuz!NT (第一篇 开篇有益)
</html>
小菜梦游Discuz!NT (第一篇 开篇有益)
           点击配置文件的超链接.在地址栏中会出现 http://localhost/DNT.config
           当然,会出现错误,提示无法提供该类型页面.可以变通一下将DNT.config修改为DNT.xml
          
           我们可以在任何地方新建一个aspx文件
           输入代码 Response.Write(HttpContext.Current.Server.MapPath("/DNT.config"))
           将输出 C:\Inetpub\wwwroot\DNT.config 
           很明显,主目录让我们的相对路径变的方便起来. "/DNT.config" 中的"/"这个符号便是从主目录开始

问题2? Discuz!NT2.0将其他所有配置文件放在Discuz.Web的config文件夹中
          那我们在代码中如何获取 D:\Discuz\Discuz.Web\config\general.config配置文件呢?
                很简单"/bbs/config/general.config"看下面解释

          我们可以在任何地方新建一个html文件
小菜梦游Discuz!NT (第一篇 开篇有益)<html>
小菜梦游Discuz!NT (第一篇 开篇有益)
<head></head>
小菜梦游Discuz!NT (第一篇 开篇有益)
<body>
小菜梦游Discuz!NT (第一篇 开篇有益)    
<href=”/bbs/config/general.config”>配置文件</a>
小菜梦游Discuz!NT (第一篇 开篇有益)
</body>
小菜梦游Discuz!NT (第一篇 开篇有益)
</html>
          点击配置文件的超链接 地址栏中会出现 http://localhost/bbs/config/general.config
          上面的bbs就是之前设定的虚拟目录名称

          我们可以在任何地方新建一个aspx文件
          输入代码 Response.Write(HttpContext.Current.Server.MapPath("/bbs/config/general.config"))
          将输出 D:\Discuz\Discuz.Web\config\general.config

          很明显,虚拟目录名可以根据用户随意设定,我们不可能根据虚拟目录名,每次去修改代码中的路径,这也就是为什么在          DNT.config中有个 <ForumPath>/bbs/</ForumPath>了

          在代码中我们只需使用 "ForumPath结点值" + "config/general.config" 便是"/bbs/config/general.config"了

问题3? 可不可以不将DNT.config和Web.config放在主目录,直接放在原位.即Discuz.Web\ 中,这样移植性将大大提高,我          们只需要建虚拟目录便可使用了.
         
          这就要看大家是否还记得 "~/" 站点根目录
          我们新建一个aspx文件,放入D:\Discuz\Discuz.Web\ 中,然后也将DNT.config放入其中 即还回原位
          在aspx中输入代码 Response.Write(HttpContext.Current.Server.MapPath("~/DNT.config"))
          将输出 D:\Discuz\Discuz.Web\DNT.config
          "~"符号的作用相当明显,取得当前站点的根目录.
          我们在Image控件中也经常看到它的身影.  
          例如: <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/1.jpg" />

          那么访问general.config,我们只需使用 "~/config/general.config"了.
          这样我们就可以让DNT.config中的<ForumPath>/bbs/</ForumPath>滚蛋了.
  
现在让我们以 Discuz!NT 2.5 中的访问代码来结尾. 2.5虽然还没有开源,但我们可以使用反射查看源代码.
小菜梦游Discuz!NT (第一篇 开篇有益)public static string ConfigFilePath

看来2.5做的不错,兼容了上面说的二者.
代码中先以 "/DNT.config"来访问,如果不在主目录中.
再以"~/DNT.config"来访问,如果不在根目录中,则抛出异常.

好了,就到这里,休息,休息.

相关文章:

  • 2022-12-23
  • 2022-01-01
  • 2021-05-23
  • 2021-08-01
  • 2021-11-27
  • 2021-06-21
  • 2021-06-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案