Dans les formulaires Web ASP.NET, le passage d'informations entre différentes pages n'a jamais été particulièrement facile sans l'utilisation de la session. En raison du modèle centré sur le postback, les informations étaient disponibles sur le serveur dans le cadre d'un événement, mais souvent dans la mauvaise page pour afficher un résultat, ce qui rendait nécessaire le passage d'informations entre les pages.
Cela a conduit à une utilisation excessive de la session, en remplissant des variables "current" dans la session destinées à indiquer l'objet actuel avec lequel on interagit. Cette surutilisation rendait à son tour les applications très dépendantes de l'état et beaucoup plus difficile de déterminer le comportement attendu ("Cette variable est-elle remplie ?" "Ai-je déjà l'ID de la commande en cours ?").
MVC est structuré autour de l'idée que votre site web est une vue sur un modèle logique d'informations. Il encourage à avoir apatride grâce à l'utilisation de contrôleurs simples répondant aux actions avec des informations clés transmises dans le cadre de la requête HTTP.
En raison de ces propriétés, la session n'est plus nécessaire pour effectuer des tâches de base dans MVC, et devient un mauvais ajustement là où elle semblait un choix parfaitement valable auparavant.
Fondamentalement, La session pollue HTTP . Il rend les requêtes (contenant souvent leur propre état) dépendantes de l'état interne du serveur récepteur. C'est pourquoi il est considéré comme un mal (bien qu'il soit souvent pratique et nécessaire).