Asp.Net 短網址實作 IN Framework 4.0

分類:Asp.Net


在專案內新建一個 Global.asax

先import 以下兩個 namespace

<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Compilation" %>

 

在 Application_Start(object  加入註冊

void Application_Start(object sender, EventArgs e)
{
    // 應用程式啟動時執行的程式碼
    

RegisterRoutes(RouteTable.Routes);



新增 虎理轉址 class

 public static void RegisterRoutes(RouteCollection routes)
{
//EX:網址為 http://xx.xx.xx/od/12345678 , 12345678 為可置換的內容 , 會對應到不網頁
routes.Add(new Route("od/{gpo_no}", new OrderRouteHandler("~/order/order_look.aspx")));
}
public class OrderRouteHandler : IRouteHandler
{
private string virtualPath;
public OrderRouteHandler(string virtualPath)
{
this.virtualPath = virtualPath;
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//origquerystr 透過httpcontext 取出 gpo_no 值應用
string origQueryStr = HttpContext.Current.Request.QueryString.ToString();
string queryStr = "?gpo_no=" + requestContext.RouteData.Values["gpo_no"];
if (!string.IsNullOrEmpty(origQueryStr))
queryStr += "&" + origQueryStr;
HttpContext.Current.RewritePath(string.Concat(virtualPath, queryStr));
return BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as Page;
}
}

主要的功能是把原本 落落長的網址 http://xx.xx.xx/order/order_look.aspx?gpo_no=12345678

簡化為 http://x.xx.xx/od/12345678  以增加可讀性

參考網址 Jailu.NET