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?

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top