L'interception des requêtes entrante en Asp.Net prend place dans le fichier Global.Asax.
Global.Asax - Application_BeginRequest
Permet d’intercepter les appels, cependant, l’objet session n’est pas encore disponible.
Plus d'info.
Global.Asax – Application_PreRequestHandlerExecute
C’est la place la plus sur pour intercepter les appels avant l’appel de la page.
A ce stade, l’objet session est disponible (mais pas dans toutes les conditions).
Attention:
PreRequestHandlerExecute intercepte tous les appels sur l’application (CSS et image inclus, dans ce cas Session n’est pas disponible).
Il existe également des cas ou HttpContext.Current n’est pas accessible.
Plus d'information sur l'article
Working with ASP.NET global.asax file ou ce
ce billet.
Voici un petit bout de code issus de mes quelques premiers tests dans global.asax
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
// Code that runs when a new session is started
HttpContext ctx = HttpContext.Current;
if( ctx != null )
if( ctx.Request.Url.ToString().ToLower().IndexOf( ".asp" ) > 0 ) // incomming request must be asp page
if( ctx.Request.Url.ToString().ToLower().IndexOf( "default.asp" ) <= 0 ) // incomming request cannot be defautlt.asp
if (Session["username"] == null)
{
if (Session["username"] == null)
{
string sJumpUrl = ctx.Request.Url.ToString();
Session["AfterLoginUrl"] = sJumpUrl;
// Display the Login Box instead
Server.Transfer("Default.aspx");
}
}
}