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

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

Aufrechterhaltung Wenn Sie Page.Request.Url danach rufen, erhalten Sie die URL der Seite, die Sie URL in asp.net Umschreiben aber die ursprüngliche URL

zu

neu geschrieben ..., was ich suche Zum Beispiel, um eine Neuschreibung zu machen, aber damit PageRequest.Url als die ursprüngliche URL bleibt, die übergeben wurde. Ist das möglich?

Antwort

10

Ich hatte ein ähnliches Problem mit Rewriting-Regeln in der web.config. Ich bin mir nicht sicher, ob dies auch Ihr Problem lösen wird, aber ich stellte fest, dass die ursprünglich angeforderte URL über die Servervariable "HTTP_X_ORIGINAL_URL" zugänglich war, als die URL umgeschrieben wurde.

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; 

Das sollten Sie den ursprünglichen Pfad und Abfragezeichenfolgeflag des Antrags erhalten, bevor Umschreiben, ob oder ob nicht Umschreiben stattgefunden hat.

+0

Genau das, was ich gesucht habe. Vielen Dank! –

+0

Danke, Holmes. +1 –

+0

Beachten Sie, dass AllKeys ein Array ist und keine Contains-Methode bereitstellt –