2010-09-09 48 views
7
Page aspxHandler = (Page)PageParser.GetCompiledPageInstance(virtualPath, context.Server.MapPath(virtualPath), context); 

aspxHandler.PreRenderComplete += AspxPage_PreRenderComplete; 
aspxHandler.ProcessRequest(context); 

當你經過此事致電Page.Request.Url,你得到你要改寫了URL重寫在asp.net但保持原始地址

頁面的網址...我在尋找什麼因爲是做一個重寫,但是讓Page.Request.Url保持原來的URL傳遞。這可能嗎?

回答

10

我有一個類似的問題,在web.config中使用重寫規則。不知道這是否也能解決您的問題,但我發現當重寫URL時,最初請求的URL可通過「HTTP_X_ORIGINAL_URL」服務器變量訪問。

VB:

string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables("HTTP_X_ORIGINAL_URL") : Request.Url.PathAndQuery 

C#:

string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables["HTTP_X_ORIGINAL_URL"] : Request.Url.PathAndQuery; 

這應該讓你請求的原始路徑和查詢字符串重寫之前,不論是否重寫已經發生。

+0

正是我在找的東西。謝謝! – 2010-12-23 01:55:14

+0

謝謝,福爾摩斯。 +1 – 2012-04-19 18:39:00

+0

請注意,AllKeys是一個數組,並且不提供Contains方法 – 2015-06-22 14:12:31