Lorsque je crée un gestionnaire Session_Start vide dans Global.asax.cs, il provoque un échec significatif lors du rendu des pages dans le navigateur.Pourquoi Session_Start dans Global.asax.cs cause-t-il des problèmes de performances?
Comment reproduire:
Créer une application Web ASP.NET MVC 3 vide (J'utilise MVC 3 RC2). Ensuite, ajoutez un contrôleur Home avec ce code:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Number(int id)
{
return Content(id.ToString());
}
}
Suivant créer une vue Accueil/Index.cshtml et placez ce qui suit dans la section BODY:
@for (int n = 0; n < 20; n++)
{
<iframe src="@Url.Content("~/Home/Number/" + n)" width=100 height=100 />
}
Lorsque vous exécutez cette page, vous ll voir 20 IFRAMEs apparaissent sur la page, chacun avec un nombre à l'intérieur. Tout ce que je fais ici, c'est créer une page qui charge 20 pages de plus dans les coulisses. Avant de continuer, prenez note de la vitesse de chargement de ces 20 pages (actualisez la page plusieurs fois pour répéter les charges).
Ensuite, allez à votre Global.asax.cs et ajoutez cette méthode (oui, le corps de la méthode est vide):
protected void Session_Start()
{
}
Exécutez maintenant la page. Cette fois, vous remarquerez que les 20 IFRAME se chargent beaucoup plus lentement, l'un après l'autre à environ 1 seconde d'intervalle. C'est étrange parce que nous ne faisons rien dans Session_Start ... c'est juste une méthode vide. Mais cela semble être suffisant pour provoquer le ralentissement dans toutes les pages suivantes.
Est-ce que quelqu'un sait pourquoi cela se produit, et mieux encore quelqu'un a-t-il une solution/solution de contournement?
Mise à jour
J'ai découvert que ce problème se produit uniquement lorsque le débogueur est attaché (en cours d'exécution avec F5). Si vous l'exécutez sans le débogueur joint (Ctrl-F5), il semble que ce soit correct. Donc, peut-être que ce n'est pas un problème important mais c'est quand même étrange.
J'ai rencontré ce problème sur les requêtes AJAX dans une application SPA. Je me suis éloigné de l'utilisation de SessionState. – voam