L'obtention de la session .NET web ASMX-service

J'ai un ASMX webservice hébergé aux côtés de mon ASP.NET web app. Maintenant, j'ai besoin d'obtenir les utilisateurs de session dans le Webservice. Pour tester ce que j'ai fait cette méthode simple:

    [WebMethod(EnableSession = true)]
    public string checkSession()
    {
        return HttpContext.Current.Session["userid"].ToString();
    }

Alors, tout d'abord je me connecter à mon application web, puis dans le navigateur goto mon webservice et cliquez sur "checkSession" sur la génération automatique d'une page de test. J'ai testé sur 3 ordinateurs. Tous les 3 de ces travaux bien avec la webapp(si les séances sont en cours de création, etc), et 2 de ces renvoyer la valeur de la Session["userid"] sur l'invocation de la webmethod, cependant le dernier ordinateur renvoie "la référence d'Objet n'est pas définie à une instance d'un objet" étant donné que la Session est null.

Alors, quelle est la différence entre ces ordinateurs et pourquoi mon ASP.NET app obtenir les sessions de formation sur tous les ordinateurs, mais le webservice cant?

Comment êtes-vous de stocker votre session? Si vous avez besoin de proc asmx webservice pour s'exécuter sur le même pool d'applications que de la webapp. Et êtes-vous d'obtenir l'erreur de session pour qu'une machine de tous les temps?
Je n'ai pas réellement le savoir. Tous les im faire est que, quand ils ont d'abord vous connecter sur le ASP.NET côté, j'ai mis: Session["userid"] = theiridfromdb; tout d'Abord, comment puis-je vérifier si son proc, et alors comment pourrais-je exécuter le webservice dans le même pool d'applications? Oui, cet ordinateur est toujours en donnant l'erreur.
Il ressemble à inproc est la valeur par défaut, donc, oui, je l'utilise. Je suis en cours d'exécution de cet arrêt d'un serveur dédié de course IIS6, et la ASP.NET le site et le service sont d'une seule application. Comme ils sont de la même application dans IIS et Visual Studio compile à la fois de leur backend de la même DLL.
Voir ce post: Session activé les services web - devhood.com/messages/message_view-2.aspx?thread_id=50261
Sur une autre note - vous ne devriez pas appeler ToString() sur un objet qui pourrait être null Doit vérifier la valeur null en premier.

OriginalL'auteur Matt | 2010-07-21