【www.gdgbn.com--SAP】

二:ihttpmodule的rewritepath方法 自己来,怎么来?用c++写个isapi会不会?答:不会。 还是老实的用.net写好了。 那就来点简单的了:从global.asax折腾到ihttphandle,折腾了半天,搞错了方向,转来转去还是在原地,后来经地的那么一搜,才发现了,路子要走还得往ihttpmodule上走。 用ihttpmodule很容易,很多人都用这个折腾,写个类继承自ihttpmodule,然后到配置文件里注册一下就可以了,示例如下: 1:新建类库项目:起名:urlrewrite 2:添加引用system.web,因为ihttpmodule在这名称空间下,而类库默认是没引用这个的 3:把class1.cs更名为urlrewrite.cs,并让类继承自ihttpmodule,实现接口,最终如下: 把着我们把代码小小调整一下如: #region ihttpmodule 成员 public void dispose()
{
//throw new exception("the method or operation is not implemented.");
} public void init(httpapplication context)
{
context.beginrequest += new eventhandler(context_beginrequest);
} void context_beginrequest(object sender, eventargs e)
{
httpapplication app = (httpapplication)sender;
httpurlrewrite(app.context);
}
public void httpurlrewrite(httpcontext context)
{
string url = context.request.url.tostring();//用户请求的url
//--这里要做很多url逻辑处理
context.rewritepath("~/default.asp教程x", null,"url="+url); }
#endregion 上面的代码,意思为: 将整个请求的url都当成参数送到default.aspx页面中,所有的请求都转化为default.aspx?url=www.cyqdata.com类似的方式 下面再建一个站点,来接受并输出结果: 4:添加新建网站起名:urlrewritedemo ps教程:本来是要建应用程序的,怕大伙下载示例时打不开,所以示例用网站形式 5:添加对urlrewrite项目的引用 6:f5一下,调出web.config,然后在配置文件添加配置项代码如下: < httpmodules>
< add name="urlrewrite" type="urlrewrite.urlrewrite,urlrewrite" />
< /httpmodules> 目前情况示例如图: 然后到default.aspx写一行代码输出接收到的参数: protected void page_load(object sender, eventargs e)
{
response.write(request["url"]);
} 一切就绪,运行,我们看结果: 图1:请求默认存在的页面,输出结果,表示很正常 图2:随便请求一个不存在页面,输出了结果,表示也很正常 图3:请求一个连后缀都没有的url,输出了结果,表示有点惊讶 从图3看出,看来vs2005集成的iis对所有的请求都统一处理了,所以连无后缀的也能处理 重点说明: 对于以iis站点开发或最终部署来说,默认aspnet_isapi.dll是处理不了无后缀或图片等后缀的,因此,需要通过添加扩展“通用映射”能达到此功能。

本文来源:http://www.gdgbn.com/qiyexinxihua/29212/