Les variables de Session dans l'action du filtre

J'ai une action de filtre vérifie si une variable de session ID est réglé. À des fins de développement, j'ai manuellement définir cette variable avant de la vérification.

public class MyActionFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext context)
        {

            context.HttpContext.Session.Add("ID", 123123);

            int ID = (int)context.HttpContext.Session.Contents["ID"];
            var rd = context.HttpContext.Request.RequestContext.RouteData;

            TED _db = new TED();

            //if not in DB
            if (_db.Users.Find(ID) == null && rd.GetRequiredString("action") != "NoAccess")
            {
                RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
                redirectTargetDictionary.Add("action", "NoAccess");
                redirectTargetDictionary.Add("controller", "Home");
                redirectTargetDictionary.Add("area", "");

                context.Result = new RedirectToRouteResult(redirectTargetDictionary);
            }

            base.OnActionExecuted(context);
        }
    }

Comme je le comprends, ce code est exécuté avant toute la page, ce Session["ID"] est toujours ensemble. Le site fonctionne très bien si je reçois constamment des tests, mais il semble se briser si je le laisse pour un moment, puis essayez de poursuivre les essais. Voici l'erreur que je reçois:

int UserID = (int)Session.Contents["ID"];
System.NullReferenceException: Object reference not set to an instance of an object.

J'ai d'abord pensé à la session peuvent tout simplement échus, mais avant tout chargement de la page, Session["ID"] doit être configuré. Quel est le problème ici?

"mais avant tout chargement de la page, la Session["ID"] doit être configuré"--pourquoi ne pas vous fixer un point d'arrêt et de trouver pour vous

OriginalL'auteur Jeff | 2013-02-06