高分求救!! 关于webservice!! ( 积分: 300 )

W

www

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用c#做一个webservice,可是如何在用户登陆后保存用户信息一直解决不了,
按照m$的文档,把下面cookieless设置为false,
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="2000"
/>
然后
[ WebMethod(EnableSession=true)]
public int LogIn(string UserName,string Password)
{
if(UserName=='abcd' &&
Password=='123')
{
Session["login"] = UserName;
}
}

[ WebMethod(EnableSession=true)]
public int GetList()
{
if(Session["login"] == null)return 0;
return 1;
}

在客户端首先调用login方法,调试跟踪变量Session["login"]正确了,再调用GetList时也可以,但再次调用GetListSession["login"]的值竟然没有了,就是说Session["login"]中的值只能保存一次,多次调用GetList时Session就丢失了。这是为什么?
 
我想用c#做一个webservice,可是如何在用户登陆后保存用户信息一直解决不了,
按照m$的文档,把下面cookieless设置为false,
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="2000"
/>
然后
[ WebMethod(EnableSession=true)]
public int LogIn(string UserName,string Password)
{
if(UserName=='abcd' &&
Password=='123')
{
Session["login"] = UserName;
}
}

[ WebMethod(EnableSession=true)]
public int GetList()
{
if(Session["login"] == null)return 0;
return 1;
}

在客户端首先调用login方法,调试跟踪变量Session["login"]正确了,再调用GetList时也可以,但再次调用GetListSession["login"]的值竟然没有了,就是说Session["login"]中的值只能保存一次,多次调用GetList时Session就丢失了。这是为什么?
 
是的Session是有一定的时间的,
所以最好是用ViewState["login"]=Session["login"].ToString();
然后在if(Session["login"] == null)return 0;
return 1;
[:D]
供参考
 
你的这种方式极其不稳定,将来出问题都不知道那里出的。
类似的问题我是这样解决的。
用户登录成功后,服务器生成一个 GUID (此值不会重复),然后保存到用户表里,并返回客户端。
然后此后客户端访问 WebService 时的请求头里都加入这个 GUID 值,服务器端获取此值并进行效验。
 
诚挚邀请您加入我的群,共同探讨delphi的问题,群号:4963281,谢谢!
 
public int GetList()
{
if(Session["login"] == "")return 0;
return 1;
}
这样试一下!
 
顶部