2011-12-28 227 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); 
      }    
     } 
    } `