2011-12-28 183 views
0

我开发一个asp.net 3.5 application.I需要重写url.My当前的URL是,网址在asp.net 3.5重写

http://app.evetos.com/Areas/UserV1/Controllers/Order1.aspx?EventID=JRQlVFOQDYs=&status1=true

该网址会很长,而不是用户freindly.So我需要这个网址缩短以下网址,

http://app.evetos.com/Order/G8Oh9WHyAKA=/true

这里,像事件ID和状态查询字符串是动态generating.So我们需要通过这些查询字符串dynamically.so我们不能硬编码这些值。

我们在web.config中尝试过标记,但它没有用处。因为这里我们不能在web.config中传递动态值。

所以请告诉我,如何做到这一点。在互联网上有任何应用程序,请给我的网址。

在此先感谢。

回答

0

我不知道这是否会有所帮助,但也许有人在未来可以使用它。我们使用以下代码进行URL重写:

private void ProcessRequestedURL() 
    { 
     string paths = "|site|pages|from|navigation|go|here|"; // Follow the format of |xxx|xxx|...| 
     string[] parts = Request.Path.Split('/'); 

     if (paths.ToLower().Contains("|" + parts[1].ToLower() + "|") && !parts[2].Contains(".") && !parts[2].ToLower().Contains("presentations")) 
     { 
      string page = null; 
      string directory = null; 
      string request = null; 
      string rewriteUrl = null; 

      directory = parts[1]; 
      page = parts[2]; 
      request = Regex.Replace(Request.Path, string.Concat("/", directory, "/", page, "/"), "", RegexOptions.IgnoreCase); 

      rewriteUrl = "/"; 
      if (parts[1].ToLower() != "vgm") // special case. "vgm" means site root. 
      { 
       rewriteUrl += string.Concat(directory, "/"); 
      } 

      if (File.Exists(string.Concat(Request.PhysicalApplicationPath, rewriteUrl, page, ".aspx"))) 
      { 
       rewriteUrl += string.Concat("", page, ".aspx?req=", request); 
       Context.RewritePath(rewriteUrl); 
      } 
      else 
      { 
       rewriteUrl = string.Concat("/404Error.aspx?aspxerrorpath=", page, ".aspx&req=", request); 
       Context.Response.StatusCode = 404; 
       Context.Response.Redirect(rewriteUrl); 
      }    
     } 
    } `