Tengo un servicio web ASMX alojado junto a mi aplicación web ASP.NET. Ahora, necesito obtener la sesión de los usuarios en el servicio web. Para probar esta Hice este método simple:Recibir sesión en .NET ASMX web-service
[WebMethod(EnableSession = true)]
public string checkSession()
{
return HttpContext.Current.Session["userid"].ToString();
}
Así, en primer inicio mi aplicación web, a continuación, en el navegador Ve a Mis servicio web y haga clic en "checkSession" en la que el auto genera página de prueba. He probado esto en 3 computadoras. Los 3 funcionan bien con la aplicación web (por lo que las sesiones se crean, etc.) y 2 de ellos devuelven el valor de Session ["userid"] al invocar el método web; sin embargo, la última computadora devuelve "Referencia de objeto no configurada en instancia de un objeto "porque Session es nula.
Entonces, ¿cuál es la diferencia entre estas computadoras y por qué mi aplicación ASP.NET puede obtener sesiones en todas las computadoras pero el servicio web no funciona?
¿Cómo está almacenando su sesión? Si está en proceso, necesita que el servicio web de asmx se ejecute en la misma appPool que la aplicación web. ¿Y está obteniendo el error de sesión para esa máquina todo el tiempo? –
Realmente no lo sé. Todo lo que hago es que cuando inicialmente inician sesión en el lado ASP.NET, configuro: Session ["userid"] = theiridfromdb; En primer lugar, ¿cómo puedo verificar si está en proceso y, entonces, cómo puedo ejecutar el servicio web en el mismo apppool? Sí, esa computadora siempre está dando el error. – Matt
Parece que inproc es el predeterminado, así que sí, lo estoy usando. Lo estoy ejecutando en un servidor dedicado que ejecuta IIS6, y el sitio ASP.NET y el servicio web son una sola aplicación. Al igual que en, son la misma aplicación en IIS y Visual Studio compila su back-end en la misma DLL. – Matt