Lors de la création d'un projet Mvc ASP.NET dans Visual Studio, un Global.asax
& Global.asax.cs
Sera créé. Dans ce fichier .cs, vous trouverez la méthode standard Application_Start
.
Ma question est la suivante, comment s'appelle cette fonction? car ce n'est pas une dérogation. Donc, je suppose que ce nom de méthode est par convention. Il en va de même pour la méthode Application_Error
.
Je veux savoir où ces méthodes sont accrochées. Parce que j'écris ces méthodes (sans les remplacer), je n'ai trouvé aucune documentation à leur sujet dans MSDN. (J'ai trouvé la page this mais elle vous indique uniquement de vous accrocher à l'événement Error
et affiche une Application_Error(object sender, EventArgs e)
mais pas la façon dont l'événement et la méthode sont liés.)
//Magicly called at startup
protected void Application_Start()
{
//Omitted
}
//Magicly linked with the Error event
protected void Application_Error(object sender, EventArgs e)
{
//Omitted
}
Ce n'est pas vraiment magique. Le pipeline ASP.NET relie tout cela.
Vous pouvez voir la documentation à ce sujet ici .
Plus précisément, vous serez intéressé par les parties ci-dessous:
Un objet
HttpApplication
est affecté à la demande.
Qui consiste en une liste des événements qui sont déclenchés et dans quel ordre.
Il y a des liens partout sur cette page (trop nombreux pour être contenus ici) qui renvoient vers diverses autres pages avec encore plus d'informations.
ASP.NET lie automatiquement les événements d'application aux gestionnaires du fichier Global.asax à l'aide de la convention de dénomination Application_event, telle que
Application_BeginRequest
. Cela est similaire à la façon dont les méthodes de page ASP.NET sont automatiquement liées aux événements, tels que l'événementPage_Load
De la page.
Source : http://msdn.Microsoft.com/en-us/library/ms178473.aspx
Pour démystifier la "magie" de la réponse acceptée, le pipeline ASP.Net lie automatiquement les événements HttpApplication
aux méthodes avec le Application_EventName
Dans la classe. Si (un peu comme moi) vous préférez voir les événements explicitement liés à un gestionnaire, ceux-ci peuvent être liés en remplaçant HttpApplication.Init()
et Visual Studio générera la méthode du gestionnaire avec la signature correcte.
public override void Init()
{
this.BeginRequest += MvcAppliction_BeginRequest;
}
private void MvcApplication_BeginRequest(object sender, EventArgs e)
{
...
}
ASP.Net lui-même le crée. Voici le flux selon MSDN -
Voici la référence - Cycle de vie de l'application ASP.Net.
D'après la référence, ASP.NET lie automatiquement les événements d'application aux gestionnaires du fichier Global.asax à l'aide de la convention de dénomination Application_event, telle que Application_BeginRequest.