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信息处理功能分析 [转]相关推荐
- VS 中配置使用Visual SVN系列 四:SVN Server配置和使用
VS 中配置使用Visual SVN系列 四:SVN Server配置和使用 1.打开 2.创建新的共享资源库 3.创建用户 4.设置用户对资源库的访问权限
- 在 Windows Server 2003 企业服务器中如何配置 IPv6 协议
概要 本文介绍如何安装和配置 Windows Server 2003 企业版环境中的 IP 版本 6 (IPv6).当前版本的 IP (也称为 IP 版本 4 或 IPv4) 尚未显著更改 1981 ...
- Tomcat服务器的下载与安装。并配置到 idear中
文章目录 前言 一.Tomcat服务器(重点) 软件架构 常见的web服务器 二.下载步骤 注意: 二.将Tomcat配置到 idear中 三.新建一个web项目(重要) 四.IDEA中热部署[重点掌 ...
- vCenter Server Appliance 6.5 中重置丢失或忘记的 root 密码
vCenter Server Appliance 6.5 中重置丢失或忘记的 root 密码 目前安装vCenter Server Appliance 6.5客户原来越多,给用户配置过程中,往往会忽略 ...
- php中隐藏网址,是否隐藏前台网址中的index.php文件名 解决方法
是否隐藏前台网址中的index.php文件名,解决方法如下: 第一步:先在网站后台设置隐藏前台网址中的index.php文件名(如图所示). 如果空间不支持,就要按下面步骤操作. 第二步:可以通过UR ...
- 使用Filezilla Server配置FTP服务器
使用Filezilla Server配置FTP服务器 一.下载Filezilla Server 官网网址:https://filezilla-project.org 二.安装Filezilla S ...
- Spark入门 - History Server配置使用
问题描述 在Spark安装成功后,无论是通过spark-submit工具还是通过Intellij IDEA提交任务,只要在Spark应用程序运行期间,都可以通过WebUI控制台页面来查看具体的运行细节 ...
- Windows Server 2012 DHCP 服务器中的新功能:故障转移和策略
Windows Server 2012 DHCP 服务器中的新功能如下: DHCP 故障转移:此功能提供让两个 DHCP 服务器服务于 同一子网或作用域的 IP 地址和选项配置的能力,前提是 DHCP ...
- 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 ...
最新文章
- java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion
- tensorflow2.报错与解决 Cannot convert a symbolic Tensor
- 老调重弹:对kvo的封装思路
- 201521123033《Java程序设计》第5周学习总结
- CAD输出pdf显示失真
- i686和x86_64的区别
- Conlletion集合框架总结大全
- 第六章 图论 AcWing 1635. 最大集团
- 网络教育统考计算机和英语作文,2020年9月网络教育统考大学英语B模拟冲刺题试卷5...
- CVPR无监督/自监督学习(Un/Self-supervised Learning)方向论文学习(附摘要)
- 删掉微信聊天记录怎么恢复 ?怎么恢复微信聊天记录?
- Keras Regressor回归(一)
- 系统集成中通讯网关与各类仪表安装接线要求
- java基础快速入门--面向对象(基础)
- 【Markdown】Markdown画图
- 推广下自己的JAVA开源游戏服务端框架
- 02-扫盲篇-操作系统常见安全漏洞攻击方式及操作系统用户权限分析
- c语言根据窗口姓名获取句柄,win32 API窗口句柄的获得
- openwrt二级路由wan口如何设置
- Python PyScript教程之将 Python 带入浏览器进行图像处理
热门文章
- linux能远程开机么,Linux 下如何实现远程开机
- swf批量转png_CAD批量打印(探索者易打软件)优势介绍
- 微型计算机普遍使用的编码是,微型计算机中普遍使用的字符编码是什么吗
- mysql 优化设计库_数据库优化设计与SQL优化
- opencv 取roi_opencv实现人脸识别快速入门
- mysql 建表代码
- Facebook:15年来最重要的转型,F8大会掀开打造私密社交网络的新篇章
- 不错的递归题:输入123,返回“321”。 要求必须用递归,不能用全局变量,输入必须是一个参数,必须返回字符串。
- 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)
- Loader之一:基本原理