Problema para persistir uma variável de Sessão criada num WebService
-
quarta-feira, 9 de maio de 2012 21:39
Boa noite, pessoal!
Estou tendo a seguinte dificuldade: Em uma página .asp (asp clássico), consumo um WebService como mostro abaixo:
Dim dataToSend dataToSend = "uname=" & replace(request("login"),"'","") & "&upass=" & replace(request("senha"),"'","") Dim oXmlDoc, oXmlNode, xmlResponse Set oReq = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") With oReq .Open "POST", "http://localhost:4247/Account/ServiceAuth.asmx/AuthenticationUser", false .SetRequestHeader "Content-Type","application/x-www-form-urlencoded" .SetRequestHeader "charset", "utf-16" .Send dataToSend End With
O WebMethod AuthenticationUser, tem que autenticar as credenciais do usuário, popular um objeto com os dados retornados do banco e armazenar este objeto na Sessão! Abaixo o código do Webmethod:
[WebMethod(EnableSession = true)] [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Xml)] public string AuthenticationUser(string uname, string upass) { ProcessResult result = new ProcessResult(); result.Status = EStatusType.Error; result.Description = "Without Executing"; RBAC oRBAC = new RBAC(); ProcessResult<CustomUsers> response = oRBAC.AuthenticationUser(uname, upass, sysid); if (response.Status == EStatusType.Success) { HttpContext.Current.Session["ConstUserData"] = response.ResponseData; result.Status = EStatusType.Success; result.Description = String.Empty; } else { result.Status = EStatusType.Error; result.Description = response.Description; } using (StringWriter sWriter = new StringWriter(Thread.CurrentThread.CurrentCulture)) { XmlSerializer xml = new XmlSerializer(typeof(String)); xml.Serialize(sWriter, result.Status.ToString()); return sWriter.ToString(); } }
Depois da autenticação, preciso conseguir acessar o objeto salvo na Session numa página .aspx:
CustomUser usuario = (CustomUser)Session["ConstUserData"];
O problema é que o objeto Session está sendo recriado a cada chamada de página, ou seja, eu armazeno o objeto na Session no Webservice, e depois quando chamo a pág. aspx, o asp.net chama o evento Session_Start e recria a Session.
Alguém sabe me dizer como faço pra persistir a sessão iniciada no Webservice, de maneira que consigo acessar a mesma sessão em toda a aplicação?? Ou vocês acham que devo armazenar os dados de outra maneira usando o objeto Cache ou mesmo um Cookie?
Agradeço desde já!
Um abraço a todos!
Todas as Respostas
-
terça-feira, 29 de maio de 2012 20:03Moderador
Daiana,
Novidades quanto a essa questao?
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima

