很简单,在项目中新建一个全局应用程序类,即Global.asax,如下图:

在Global.asax文件中添加如下代码:
void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string url = context.Request.Path;
int i = 0;
if (url.Equals("/")) {return;}
//.html做一个特殊处理
if (url.EndsWith(".html"))
{
i = url.IndexOf("/");
if (i >= 0)
{
string v = url.Substring(i + 1, url.Length - i - 1);
v = v.Replace("/", "").Replace(".html", "");
context.RewritePath("~/url.aspx?wd=" + Server.UrlEncode(v));
}
}
}
需要注意的是,默认情况下访问HTML文件及无扩展名的页面,IIS是不会让ASP.NET去处理的(会直接读取返回),也就是说上面的代码只有当用户访问不存在的ASP.NET文件时(如不存在的aspx文件)才会执行。导致的结果是根本达不到html页面重写的作用。
做法是在IIS里面重写做一些文件映射即可,如下图:


可执行文件选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
“确认文件是否存在”一定不能选