Community Server配置对网址中的www信息处理功能分析 [转]
國外有種習慣,比如你訪問 www.****.com 網站,他會自動跳轉到 ****.com 。
在 Community Server 中就提供了這種功能,而且這種功能是可選的(可以強制去掉、強制不去掉、不理睬它)。
默認情況下 Community Server 就強制去掉 www. 。
先說如何修改是這個功能
打開Web項目,其中的 communityserver.config 配置文件。
在這里我們可以看到下面的配置節:
<CommunityServer>
<Core ......? wwwStatus = "Remove" .... />
......
</CommunityServer>
這里可以有三個設置:
Require?? 強制加 www.
Remove??強制不加 www.? 這個是默認設置?
Ignore???? 忽略這個問題
只要修改成對應的設置,就自動切換了這個設置。
下面我們看它是如何實現這個功能的:
Community Server 2.0 中使用了 HttpModules 來處理這個功能:web.config中,我們可以看到 httpModules 的配置如下:
??? <httpModules>
????? <add name="CommunityServer" type="CommunityServer.CSHttpModule, CommunityServer.Components" />
??? </httpModules>
..........
CSHttpModule 類在 CommunityServer.Components 項目的HttpModule 目錄下的 CSHttpModule.cs 文件中.這個類繼承了 System.Web.IHttpModule 接口
System.Web.IHttpModule 接口要求實現 初始化模塊方法,即 Init 方法。
在這個類的初始化方法中,我們可以看到,我們訂約了BeginRequest 事件。
public void Init(HttpApplication application)
{
?application.BeginRequest += new EventHandler(this.Application_BeginRequest);
?......
}
在這個事件的處理函數 Application_BeginRequest 中,如下,我們可以看到,先從Community Server 配置文件中讀取出配置(既從communityserver.config 配置文件讀取配置)
然后根據這個配置檢查我該如何處理(CheckWWWStatus 函數實現)。
private void Application_BeginRequest(Object source, EventArgs e)
{
?.......
?HttpContext context = application.Context;
?.......
?CSConfiguration config = CSConfiguration.GetConfig();
?.......
?CheckWWWStatus(config,context);
?.......
}
private void CheckWWWStatus(CSConfiguration config, HttpContext context)
{
?if(config.WWWStatus == WWWStatus.Ignore)
??return;
?const string withWWW = "http://www.";
?const string noWWW = "http://";
?string rawUrl = context.Request.Url.ToString().ToLower();
?bool isWWW = rawUrl.StartsWith(withWWW);
?if(config.WWWStatus == WWWStatus.Remove && isWWW)
?{
??context.Response.Redirect(rawUrl.Replace(withWWW, noWWW));
?}
?else if(config.WWWStatus == WWWStatus.Require && !isWWW)
?{
??context.Response.Redirect(rawUrl.Replace(noWWW, withWWW));
?}
}
代碼分析到此結束,Community Server 2.0 就是通過上述代碼實現定制不同的 www 處理策略的。
?
轉載于:https://www.cnblogs.com/guodapeng/archive/2007/12/21/1009054.html
總結
以上是生活随笔為你收集整理的Community Server配置对网址中的www信息处理功能分析 [转]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用 API 函数(10): 硬件与系统
- 下一篇: 统一沟通UC闲谈