Question

Je souhaite implémenter une fonctionnalité de type filtre ISAPI à l'aide de HttpModule dans IIS7 exécuté en mode Pipeline de traitement de demande intégré IIS.

L'objectif est d'examiner la requête entrante au niveau du serveur Web et d'injecter des HttpHeaders personnalisés dans la requête. (for ex: HTTP\_EAUTH\_ID)

Et plus tard dans le cycle de vie d'une page ASPX, je devrais pouvoir utiliser cette variable comme

string eauthId = Request.ServerVariables["HTTP\_EAUTH\_ID"].ToString();

Donc en implémentant ce module au niveau du serveur Web, est-il possible de modifier la collection ServerVariables ??

Était-ce utile?

La solution

HttpRequest.ServerVariables La propriété est une collection en lecture seule.Vous ne pouvez donc pas modifier cela directement.Je suggérerais de stocker vos données personnalisées dans httpcontexte (ou un objet d'application global ou votre base de données) à partir de votre module http, puis en lisant cette valeur partagée dans la page aspx.

Si vous souhaitez toujours modifier les variables du serveur, il existe une technique de hack mentionnée dans ce document. fil en utilisant la réflexion.

Autres conseils

Je pense que la liste des variables du serveur ne contient que les en-têtes envoyés du navigateur au serveur.

Vous ne pourrez pas modifier non plus le HttpRequest.Headers ou la HttpRequest.ServerVariables collection.Vous pourrez cependant joindre vos informations à l’un des :

HttpContext.Current.Items
HttpContext.Current.Response.Headers

Malheureusement, Request.Params, Request.QueryString, Request.Cookies, Request.Form (et presque tout autre endroit où vous penseriez le mettre en lecture seule.

Je vous déconseille fortement d'utiliser la réflexion s'il s'agit d'un module Http que vous envisagez d'installer dans IIS 7..Étant donné que ce code sera appelé (potentiellement) pour chaque requête transitant par le serveur Web, il devra être très rapide et la réflexion ne suffira pas (sauf si vous avez très peu d'utilisateurs).

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top