Je dispose d'un service Web ASMX hébergé à côté de mon application Web ASP.NET. Maintenant, j'ai besoin d'obtenir la session des utilisateurs dans le Webservice. Pour tester cela, je fait cette méthode simple:Obtenir une session dans le service Web .NET ASMX
[WebMethod(EnableSession = true)]
public string checkSession()
{
return HttpContext.Current.Session["userid"].ToString();
}
Alors, d'abord je me connecte à mon application Web, puis dans le navigateur goto mon webservice et cliquez sur « checkSession » sur cette auto générée page de test. J'ai testé cela sur 3 ordinateurs. Tous les 3 fonctionnent correctement avec la webapp (donc les sessions sont créées, etc), et 2 d'entre elles retournent la valeur de Session ["userid"] en invoquant la méthode web, cependant le dernier ordinateur retourne "Object reference not set to instance d'un objet "car Session est nulle.
Alors, quelle est la différence entre ces ordinateurs et pourquoi mon application ASP.NET peut-elle obtenir les sessions sur tous les ordinateurs mais le service web ne peut pas?
Comment stockez-vous votre session? Si in-proc vous avez besoin du service web asmx pour fonctionner sur le même appPool que la webapp. Et obtenez-vous l'erreur de session pour cette machine tout le temps? –
Je ne sais pas vraiment. Tout ce que je fais est que quand ils se connectent initialement sur le côté ASP.NET, je définis: Session ["userid"] = theiridfromdb; Tout d'abord, comment puis-je vérifier si elle est in-proc, et comment puis-je exécuter le webservice dans le même appPool? Oui, cet ordinateur donne toujours l'erreur. – Matt
Il semble que inproc est la valeur par défaut, donc oui, je l'utilise. Je l'exécute sur un serveur dédié exécutant IIS6, et le site ASP.NET et le service web sont une application. Comme dans, ils sont la même application dans IIS et Visual Studio compile leurs deux backend à la même DLL. – Matt