怎么样在ASP.NET2.0中实现URL重写?

怎么样在ASP.NET2.0中实现URL重写?

本文参考了网上已有代码,在此基础上进行了整理归纳,总结出在ASP.NET2.0环境下实现URL重写的行之有效的方法。如果转载,请注明出处:雪尘的专栏
一、在网站中添加MyHttpModule类,代码如下:
怎么样在ASP.NET2.0中实现URL重写?usingSystem;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Collections;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Collections.Specialized;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.IO;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Text;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Text.RegularExpressions;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Xml;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Web;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Web.UI;
怎么样在ASP.NET2.0中实现URL重写?
usingSystem.Web.Caching;
怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?
namespaceUrlRewrite
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?
publicclassMyHttpModule:IHttpModule
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?
publicvoidInit(HttpApplicationapp)
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?app.AuthorizeRequest
+=newEventHandler(app_AuthorizeRequest);
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
publicvoidDispose(){}
怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?
protectedvoidRewrite(stringrequestedPath,System.Web.HttpApplicationapp)
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?
//app.Context.RewritePath("~/default.aspx",string.Empty,"test=tttttttt");
怎么样在ASP.NET2.0中实现URL重写?foreach(URLRewriteurlinSiteUrls.GetSiteUrls().Urls)
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?
if(Regex.IsMatch(app.Context.Request.Path,url.Pattern,RegexOptions.Compiled|RegexOptions.IgnoreCase))
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?app.Context.RewritePath(url.Page,
string.Empty,Regex.Replace(app.Context.Request.Path,url.Pattern,url.QueryString,RegexOptions.Compiled|RegexOptions.IgnoreCase));
怎么样在ASP.NET2.0中实现URL重写?
return;
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?if(app.Context.Request.Path.ToLower().EndsWith(".shtml"))
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?app.Context.Response.Redirect(
"~/index.html");
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?
privatevoidapp_AuthorizeRequest(objectsender,EventArgse)
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?HttpApplicationapp
=(HttpApplication)sender;
怎么样在ASP.NET2.0中实现URL重写?Rewrite(app.Request.Path,app);
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?
publicclassSiteUrls
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
内部属性和方法
怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?
publicstaticSiteUrlsGetSiteUrls()
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?
stringCacheKey="SiteUrls";
怎么样在ASP.NET2.0中实现URL重写?SiteUrlsurls
=System.Web.HttpContext.Current.Cache["SiteUrls"]asSiteUrls;
怎么样在ASP.NET2.0中实现URL重写?
if(urls==null)
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?urls
=newSiteUrls();
怎么样在ASP.NET2.0中实现URL重写?System.Web.HttpContext.Current.Cache.Insert(CacheKey,urls,
newCacheDependency(urls.SiteUrlsFile),DateTime.MaxValue,TimeSpan.Zero,CacheItemPriority.High,null);
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?
returnurls;
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
///<summary>
怎么样在ASP.NET2.0中实现URL重写?///输出URL示例
怎么样在ASP.NET2.0中实现URL重写?
///</summary>
怎么样在ASP.NET2.0中实现URL重写?///<paramname="id"></param>
怎么样在ASP.NET2.0中实现URL重写?///<returns></returns>

怎么样在ASP.NET2.0中实现URL重写?publicstringShow(intid)
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?
returnstring.Format(Paths["Show"],id);
怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?}

怎么样在ASP.NET2.0中实现URL重写?publicclassURLRewrite
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
{
怎么样在ASP.NET2.0中实现URL重写?怎么样在ASP.NET2.0中实现URL重写?
成员变量