国外有种习惯,比如你访问 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信息处理功能分析 [转]相关推荐

  1. VS 中配置使用Visual SVN系列 四:SVN Server配置和使用

    VS 中配置使用Visual SVN系列 四:SVN Server配置和使用 1.打开 2.创建新的共享资源库 3.创建用户 4.设置用户对资源库的访问权限

  2. 在 Windows Server 2003 企业服务器中如何配置 IPv6 协议

    概要 本文介绍如何安装和配置 Windows Server 2003 企业版环境中的 IP 版本 6 (IPv6).当前版本的 IP (也称为 IP 版本 4 或 IPv4) 尚未显著更改 1981 ...

  3. Tomcat服务器的下载与安装。并配置到 idear中

    文章目录 前言 一.Tomcat服务器(重点) 软件架构 常见的web服务器 二.下载步骤 注意: 二.将Tomcat配置到 idear中 三.新建一个web项目(重要) 四.IDEA中热部署[重点掌 ...

  4. vCenter Server Appliance 6.5 中重置丢失或忘记的 root 密码

    vCenter Server Appliance 6.5 中重置丢失或忘记的 root 密码 目前安装vCenter Server Appliance 6.5客户原来越多,给用户配置过程中,往往会忽略 ...

  5. php中隐藏网址,是否隐藏前台网址中的index.php文件名 解决方法

    是否隐藏前台网址中的index.php文件名,解决方法如下: 第一步:先在网站后台设置隐藏前台网址中的index.php文件名(如图所示). 如果空间不支持,就要按下面步骤操作. 第二步:可以通过UR ...

  6. 使用Filezilla Server配置FTP服务器

    使用Filezilla Server配置FTP服务器 一.下载Filezilla  Server 官网网址:https://filezilla-project.org 二.安装Filezilla  S ...

  7. Spark入门 - History Server配置使用

    问题描述 在Spark安装成功后,无论是通过spark-submit工具还是通过Intellij IDEA提交任务,只要在Spark应用程序运行期间,都可以通过WebUI控制台页面来查看具体的运行细节 ...

  8. Windows Server 2012 DHCP 服务器中的新功能:故障转移和策略

    Windows Server 2012 DHCP 服务器中的新功能如下: DHCP 故障转移:此功能提供让两个 DHCP 服务器服务于 同一子网或作用域的 IP 地址和选项配置的能力,前提是 DHCP ...

  9. aws rds监控慢sql_在AWS RDS SQL Server上的SSAS中部署表格数据库

    aws rds监控慢sql In this article, we are going to explore Analysis Service for AWS RDS SQL Server in de ...

最新文章

  1. java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion
  2. tensorflow2.报错与解决 Cannot convert a symbolic Tensor
  3. 老调重弹:对kvo的封装思路
  4. 201521123033《Java程序设计》第5周学习总结
  5. CAD输出pdf显示失真
  6. i686和x86_64的区别
  7. Conlletion集合框架总结大全
  8. 第六章 图论 AcWing 1635. 最大集团
  9. 网络教育统考计算机和英语作文,2020年9月网络教育统考大学英语B模拟冲刺题试卷5...
  10. CVPR无监督/自监督学习(Un/Self-supervised Learning)方向论文学习(附摘要)
  11. 删掉微信聊天记录怎么恢复 ?怎么恢复微信聊天记录?
  12. Keras Regressor回归(一)
  13. 系统集成中通讯网关与各类仪表安装接线要求
  14. java基础快速入门--面向对象(基础)
  15. 【Markdown】Markdown画图
  16. 推广下自己的JAVA开源游戏服务端框架
  17. 02-扫盲篇-操作系统常见安全漏洞攻击方式及操作系统用户权限分析
  18. c语言根据窗口姓名获取句柄,win32 API窗口句柄的获得
  19. openwrt二级路由wan口如何设置
  20. Python PyScript教程之将 Python 带入浏览器进行图像处理

热门文章

  1. linux能远程开机么,Linux 下如何实现远程开机
  2. swf批量转png_CAD批量打印(探索者易打软件)优势介绍
  3. 微型计算机普遍使用的编码是,微型计算机中普遍使用的字符编码是什么吗
  4. mysql 优化设计库_数据库优化设计与SQL优化
  5. opencv 取roi_opencv实现人脸识别快速入门
  6. mysql 建表代码
  7. Facebook:15年来最重要的转型,F8大会掀开打造私密社交网络的新篇章
  8. 不错的递归题:输入123,返回“321”。 要求必须用递归,不能用全局变量,输入必须是一个参数,必须返回字符串。
  9. 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)
  10. Loader之一:基本原理