Richiesta oggetto IHttpHandler ed emissione directory virtuale
-
19-09-2019 - |
Domanda
Sto scrivendo una classe che eredita da IHttpHandler per lo script e css combinando. Voglio solo unire se querystring ha un parametro speciale definito. Se questo parametro non è definito, allora voglio scrivere il contenuto del file come se il gestore non era nemmeno coinvolto. L'unico problema che sto incontrando è che ho un tag script in una pagina che fa riferimento a uno script in una directory virtuale ma la pagina che sto colpendo è in una sottodirectory dell'applicazione.
La pagina che lo script di controllo viene fatto riferimento da si trova a http: // webserver / Amministratore / Default. aspx . Quando accedo l'oggetto Request nella classe che implementa tutte le proprietà IHttpHandler percorso del file sono le seguenti: webserver / Amministratore / ~ / SharedScripts / control.js. Come posso risolvere questo?
Soluzione 2
Questa è la soluzione mi è venuta:
string fileContent = string.Empty;
string filePath = context.Request.PhysicalPath;
int tildeLocation = filePath.LastIndexOf("~");
string location = (tildeLocation == -1 ? filePath : context.Server.MapPath(filePath.Substring(tildeLocation, filePath.Length - tildeLocation)));
Altri suggerimenti
In sostanza, è necessario il metodo ResolveUrl
, ma non hanno un Page
, o eventuali controlli per quella materia. questo articolo spiega come fare senza un oggetto Page
a portata di mano.