httpModules httphandle

httpModules httphandle

 

最近要给客户迁移他的网站,因为之前有独立的服务器,可以设置iis绑定空主机头,所有url可以实现无限子域名,但是现在要更换服务器到虚拟主机上,就不能绑定空主机头了,但是之前的子域名必须保证还可以访问.

后来就想到可以利用HTTPmodules来实现一个url的转发.顺便再详细了解一下他们的概念.

 

1.httpModules(Http模块,可以在页面处理前后、应用程序初始化、出错等时候加入自己的事件处理程序)

    

2.Httphandle(处理具体后缀的文件)

 

3. HttpHandlerFactory (用来创建Http处理程序,创建的同时可以附加自己的事件处理程序)

 

<add name="ModuleName"

type=".NET Class, Assembly [,Version=version number]

[,Culture=culture] [,PublicKeyToken=token]"/>

 

属性

属性

说明

name

必选的属性。

为模块提供一个好记的名称,这使您可为 global.asax 文件内的模块事件关联一个事件处理程序。

type

必选的属性。

指定由版本、程序集和公钥标记组成的逗号分隔的类/程序集组合。ASP.NET 首先在应用程序的专用 \bin 目录中搜索程序集 DLL,然后在系统程序集缓存中搜索程序集 DLL

 

 

Machine.config是在IIS第一次访问ASP.net时

Web.config 是在第一次访问虚拟目录所代表的应用程序时加载

还有Web.config 发生变化时

 

代码如下:

public class UrlHttpModule : IHttpModule

{

public void Init(HttpApplication application)

{

application.BeginRequest += new EventHandler(Application_BeginRequest);

}

 

private void Application_BeginRequest(object sender, EventArgs e)

{

 

HttpApplication application = (HttpApplication)sender;

HttpContext context = application.Context;

HttpRequest request = application.Request;

HttpResponse response = application.Response;

 

string[] url = request.Url.Host.Split('.');

if (url.Length == 4)

{

response.Redirect("http://www.xxx.com/Merchant/?domain=" + url[1]);

}

 

//response.Write(request.Url.Host + url.Length);

 

//response.Redirect("/");

}

 

public void Dispose()

{

 

}

}

posted on 2009-08-14 23:44  隨風.NET  阅读(680)  评论(0编辑  收藏  举报

导航