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

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

koruyarak bundan sonra Page.Request.Url aradığınızda sizeURL asp.net'de Yeniden Yazma ancak orijinal url

için yeniden yazdım sayfanın URL ... ne arıyorum olsun için bir yeniden yazma yapmak, ancak Page.Request.Url için geçirilen özgün url olarak kalır. Bu mümkün mü?

cevap

10

Web.config dosyasında yeniden yazma kuralları kullanarak benzer bir sorun yaşadım. Bunun sorununuzu da çözüp çözmeyeceğinden emin değilim, ancak URL yeniden yazıldığında, orijinal olarak istenen URL'ye "HTTP_X_ORIGINAL_URL" sunucu değişkeni aracılığıyla erişilebildiğini öğrendim.

VB:

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

C#: yeniden yazma yerini almıştır olsun veya olmasın, yeniden yazmadan önce size isteğin özgün yolunu ve sorgu dizesi almalısınız

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

.

+0

Sadece aradığım şey. Teşekkürler! –

+0

Teşekkürler, holmes. +1 –

+0

AllKeys'in bir dizi olduğunu ve bir İçerir yöntemi sağlamadığını unutmayın. –