
- 加为好友
- 发送私信
- 在线聊天
|
| 发表于:2008-03-12 15:03:567楼 得分:5 |
给个简单的例子给你看吧,framework是2.0的 1.url重写代码.将下面代码编译为MyHttpModule.dll,然后放入bin目录中,如果没有可以在网站跟目录下建立一个.注意名称不要变,配置web.config时需要用的. - C# code
using System.Web;
using System.Text.RegularExpressions;
namespace MyHttpModule
{
public class MyModule : IHttpModule
{
private HttpApplication httpApp = null;
//下面3个方法是继承IHttpModule接口后必须实现的
public void Init(HttpApplication httpApp)
{
this.httpApp = httpApp;
this.httpApp.BeginRequest += new System.EventHandler(httpApp_BeginRequest);
}
private void httpApp_BeginRequest(object sender, System.EventArgs e)
{
string UrlStr = httpApp.Context.Request.Url.ToString();
//下面就看你需要怎么重写了,主要是看正则表达式的使用了....
string FileName = Regex.Match(UrlStr, @"/([^\/]+)\.html?", RegexOptions.IgnoreCase).Groups[1].Value;
if (FileName != "")//如果使用正则表达式取到文件,则转向这个aspx文件,但是注意如果不存在FileName+".aspx"组合的aspx页面时会出现404错误
httpApp.Context.RewritePath(FileName + ".aspx");
else
httpApp.Context.RewritePath("err.aspx");//否则转向一个错误页面指示这个aspx文件不存在
}
public void Dispose()
{ }
}
}
2.在web.config中的 <system.web>节点下添加 <httpModules>接点,文件大致如下 - XML code
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<httpModules>
<!--
name是程序集名称,就是你的dll的名称
type的内容是"命名空间.映射类名称,映射类名称",这句可以不要
-->
<add name="MyModule" type="MyHttpModule.MyModule,MyModule"/>
</httpModules>
<authentication mode="Windows" />
</system.web>
</configuration>
3.IIS的配置.这个是在2003系统,iis6下配置的. 找到你的虚拟目录,右键选择属性,然后在目录中点配置,在弹出窗口中点插入,然后在可执行文件中浏览选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,注意你的framework版本号,把确认文件是否存在这个钩去掉,这个非常重要,切记... 4.在你的跟目录下建立一个index.aspx和err.aspx,内容如下 index.aspx - HTML code
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
其实我是aspx页面,不是html页面,哈哈~~
</body>
</html>
err.aspx - HTML code
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
页面不存在!
</html>
完成上面4部以后就基本ok了,你可以试试效果了 拿我机子来说 1)访问http://192.168.1.68/HttpHandler/index.htm时,其实访问的是http://192.168.1.68/HttpHandler/index.aspx 2)访问http://192.168.1.68/HttpHandler/index.aahtm[/b]时,由于正则不匹配,所以访问了http://192.168.1.68/HttpHandler/err.aspx 3)访问http://192.168.1.68/HttpHandler/test.htm时,其实访问的是http://192.168.1.68/HttpHandler/test.aspx,但是不存在test.aspx这个文件,所以会提示404错误 | | |
修改
删除
举报
引用
回复
| |