服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - ASP.NET教程 - asp.net下通过泛解析和伪静态实现二级域名的实现方法

asp.net下通过泛解析和伪静态实现二级域名的实现方法

2019-09-09 10:57asp.net开发网 ASP.NET教程

当我们想做一个站群或想为每一个会员的主页设置为一个二级域名时,总是想拼命的去找些组件来实现。

虽然最后是实现了,但身为程序员的我,却总是感觉利用其他不开源的组件自己总把握不了技术的核心。其实在net中微软已经为我们留下了接口,让我们为所欲为了。

首先我们可以通过一张图大概了解下.net的生命周期。 
asp.net下通过泛解析和伪静态实现二级域名的实现方法
从 上图可以看出来,针对每个不同用户的请求,服务器都会创建一个新的HttpContext实例直到请求结束,服务器销毁这个实例。而 Ihttpcontext是httpcontext对外公开的接口,它包含了2个方法:dispose()和Init(HttpApplication context),我们可以实现Ihttpcontext从而达到httpcontext。 
关键代码: 

复制代码代码如下:


HttpApplication app = (HttpApplication)sender; 
HttpContext context = app.Context; 
string url = context.Request.Url.AbsoluteUri; //完整url 
string turl = url.Split('.')[0]; 
string surl = turl.ToLower().Replace("http://", ""); 
StringBuilder strb = new StringBuilder(); 
strb.Append(url); 
strb.Append(surl); 


app.Context.RewritePath(path, string.Empty, strb.ToString().Split('?')[1]); 
在web.config里配置下: 
<system.web>里添加如下代码。 
<httpModules> 
<add type="Common.URLRewriter" name="Common" /> 
最后设置IIS的时候记得要把IIS的表头设置为空。 
运行下你就能实现了 
</httpModules>

延伸 · 阅读

精彩推荐