Pipeline di elaborazione delle richieste integrata IIS: modifica richiesta
-
09-06-2019 - |
Domanda
Desidero implementare una funzionalità simile a un filtro ISAPI utilizzando HttpModule in IIS7 in esecuzione in modalità pipeline di elaborazione delle richieste integrata IIS.
L'obiettivo è esaminare la richiesta in arrivo a livello di server Web e inserire alcuni HttpHeader personalizzati nella richiesta. (for ex: HTTP\_EAUTH\_ID)
E più avanti nel ciclo di vita della pagina di una pagina ASPX, dovrei essere in grado di utilizzare quella variabile come
string eauthId = Request.ServerVariables["HTTP\_EAUTH\_ID"].ToString();
Quindi, implementando questo modulo a livello di server Web, è possibile alterare la raccolta ServerVariables?
Soluzione
HttpRequest.ServerVariables La proprietà è una raccolta di sola lettura.Quindi, non puoi modificarlo direttamente.Suggerirei di memorizzare i tuoi dati personalizzati in httpcontesto (o oggetto dell'applicazione globale o database) dal tuo httpmodule e quindi leggere quel valore condiviso nella pagina aspx.
Se desideri comunque modificare le variabili del server, in questo è menzionata una tecnica di hacking filo utilizzando la riflessione.
Altri suggerimenti
Credo che l'elenco delle variabili del server contenga solo le intestazioni inviate dal browser al server.
Non sarai in grado di modificare neanche il file HttpRequest.Headers
o il HttpRequest.ServerVariables
collezione.Potrai comunque aggiungere le tue informazioni a uno qualsiasi di:
HttpContext.Current.Items
HttpContext.Current.Response.Headers
Purtroppo, Request.Params, Request.QueryString, Request.Cookies, Request.Form
(e quasi ogni altro posto in cui potresti pensare di riempirlo è di sola lettura.
Sconsiglio vivamente di utilizzare la riflessione se si tratta di un HttpModule che intendi installare in IIS 7.Dato che questo codice verrà chiamato (potenzialmente) per ogni richiesta che passa attraverso il server web, dovrà essere molto veloce e la riflessione non lo taglierà (a meno che tu non abbia pochissimi utenti).
Buona fortuna!