熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET中獲取URL重寫前的原始地址詳解

2013-11-13 10:45:15  來源: .NET編程 
在ASPNET中如果你使用了URL重寫通過HttpContextRequest獲取到的是重寫後的地址如果這個地址要返回給客戶端(比如Redirect)我們一般希望是重寫前的友好地址  

  通常的使用場景是當我們有某個頁面需要用戶登錄才能訪問時我們會在代碼中判斷當前訪問用戶是否登錄如果未登錄則重定向至登錄頁面並將當 前網址通過Url參數傳遞給登錄頁面如果使用了URL重寫並通過RequestUrlAbsoluteUri獲取當前網址用戶登錄後打開的就是 重寫後的地址這雖然不影響正常使用但從用戶體驗及URL統一的角度我們更希望是重寫前的地址

  之前我們在開發中也被這個問題困擾只能盡量通過js重定向至登錄頁面(通過locationhref獲取當前網址)或者在代碼中手動寫返回地址

  現在我們找到了解決方法可以從RequestHeaders中找到重寫前的網址

  )如果重寫組件用的是ISAPI_Rewrite則訪問被重寫的網址時Headers中會增加一項數據Key為XRewriteURL值為重寫前的網址

  )如果重寫組件用的是IIS自帶的URL Rewrite模塊則Headers中增加的信息的Key為XOriginalURL

  這樣我們就可以輕松獲取重寫前的網址示例代碼如下

復制代碼 代碼如下:

  
if (RequestHeaders["XRewriteURL"] != null)
{
    ResponseWrite("http://" + RequestUrlHost + RequestHeaders["XRewriteURL"]);
}
else if (RequestHeaders["XOriginalURL"] != null)
{
    ResponseWrite("http://" + RequestUrlHost + RequestHeaders["XOriginalURL"]);
}


From:http://tw.wingwit.com/Article/program/net/201311/14436.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.