日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Community Server配置对网址中的www信息处理功能分析 [转]

發布時間:2024/1/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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信息处理功能分析 [转]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。