通过Global.asax文件中的Application_BeginRequest()事件实现访问链接的静态地址映射

protected void Application_BeginRequest(Object sender, EventArgs e) {
        
        
string strCurrentPath;
        strCurrentPath 
= Request.Path;
        
//make sure that it ends with aspx.  This is some quick validation on the path. 
        
//This will shortcut processing for images and other files (WebResource.axd, for example). 
        if(System.IO.Path.GetExtension(strCurrentPath).EndsWith(
            
"aspx"true, System.Globalization.CultureInfo.InvariantCulture)) {
            
string strCustomPath;
            
string qString = Request.QueryString.ToString();
            
if(qString != string.Empty)
                qString 
= "&" + qString;
            strCurrentPath 
= strCurrentPath.ToLowerInvariant();
            
string appRoot = GetAppRoot(strCurrentPath);
            
//string pageName = "";
            
// the URL contains this folder name
            
//Response.Write(strCurrentPath);
            if(strCurrentPath.IndexOf("catalog/", StringComparison.InvariantCultureIgnoreCase) > -1{

                appRoot 
= appRoot.Replace("catalog/""");
                strCustomPath 
= appRoot + "catalog.aspx?guid=" + System.IO.Path.GetFileNameWithoutExtension(strCurrentPath) + qString;

                
// rewrite the URL
                Context.RewritePath(strCustomPath, false);
            }

            
else if(strCurrentPath.IndexOf("product/", StringComparison.InvariantCultureIgnoreCase) > -1{
                appRoot 
= appRoot.Replace("product/""");

                strCustomPath 
= appRoot + "product.aspx?guid=" + System.IO.Path.GetFileNameWithoutExtension(strCurrentPath);
                
// rewrite the URL

                Context.RewritePath(strCustomPath, 
false);
            }

        }

    }
posted @ 2008-03-06 09:33  宿远  阅读(2737)  评论(1)    收藏  举报