当前位置:编程学习 > C#/ASP.NET >>

登录后服务器记不住登录状态。。。。(重开贴,定要解决这个问题!)

用asp.net 写的登录后记住登录状态,在我的电脑上试,可以记住,几天都不掉。但传到虚拟主机上,就是记不住,30分钟就没了。请大家帮看看,是什么问题? 

登录代码: 

                    Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, strusrname, DateTime.Now, DateTime.Now.AddYears(2), ckpass1.Checked, "String", FormsAuthentication.FormsCookiePath) 

                    Dim str_encrytyped_ticket As String = FormsAuthentication.Encrypt(ticket) 
                    Dim authenticationcookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName, str_encrytyped_ticket) 


                    If ckpass1.Checked Then 
                        authenticationcookie.Expires = DateTime.Now.AddYears(2) 
                    End If 

                    Response.Cookies.Add(authenticationcookie) 


                    Response.Redirect(FormsAuthentication.GetRedirectUrl(strusrname, ckpass1.Checked)) 

--------------------------- 

webconfig这样设置的: 

<forms name="login_name" loginUrl="login.aspx" timeout="60" path="/" /> 
---------------------------- 

1.在我的电脑上是记得住的。 
2.在服务器上可以记住30分钟。但30分钟后就没了。 
3.在30分钟内,查看验证票显示: 
path=//过期时间=2011-7-26 10:47:23/是否过期=False/是否长久=True/发布日期=2009-7-26 10:47:23/ticket.name=qqqq/版本=1/ 

说明: 
过期时间=2011-7-26 10:47:23 
是否长久=True 

说明验证票是对的,但为何记不住呢? 


***********最高分赠!******************** 
 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:13  
 
songhtao
 
(三十年孤独) 

等 级: 
3
4
 #1楼 得分:0回复于:2009-07-28 11:11:56seesion的超时设置了没有? 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:【讨论、技术】如何使用.NET开发浏览器 
 
xu20032
 


等 级: 
 #2楼 得分:0回复于:2009-07-28 11:14:26seesion我就没用啊。你指的是设置那里? 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:movewindow api在c#中对应的函数是什么? 
 
enihs
 
(shine) 

等 级: 
 #3楼 得分:0回复于:2009-07-28 11:28:02web.config内要设置平滑过期slidingExpiration 为false 
参考 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:[可用分回赠参与帖]从snk形式文件导出xml形式的密钥密钥对供程序使用,不知道怎样实现? 
 
CloudOfFly
 
(追忆) 

等 级: 
 #4楼 得分:0回复于:2009-07-28 11:30:26引用 1 楼 songhtao 的回复:
seesion的超时设置了没有? 



在web.config 中设置 
  <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120" stateNetworkTimeout="7200"/> 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:求用VB2005做软件升级程序 
 
cpp2017
 
(慕白兄) 

等 级: 
5
更多勋章 #5楼 得分:0回复于:2009-07-28 11:33:36try: 

<authentication mode="Forms"> 
  <forms      slidingExpiration="false" ......... 

</authentication> 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:session老是丢失的问题 
 
wybxs2006
 
(飞虎) 

等 级: 
 #6楼 得分:0回复于:2009-07-28 12:21:03Forms 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
qq196260188
 
(qq196260188) 

等 级: 
 #7楼 得分:0回复于:2009-07-28 12:59:20最好用session,不要用什么控件 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
xu20032
 


等 级: 
 #8楼 得分:0回复于:2009-07-28 21:34:11经实验,以上方法都不行喔: 

1.在web.config 中设置 
  <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120" stateNetworkTimeout="7200"/> 

2. <authentication mode="Forms"> 
  <forms      slidingExpiration="false" ......... 

</authentication> 

不行,还是过期。。。。。。。。。。。。。。。。。。。。 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
xu20032
 


等 级: 
 #9楼 得分:0回复于:2009-07-29 08:28:22迷人知道吗? 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
IHandler
 
(Ferry) 

等 级: 
 #10楼 得分:0回复于:2009-07-29 08:36:45服务器可能设置了定时资源回收 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
yanm7788
 
(颜) 

等 级: 
 #11楼 得分:0回复于:2009-07-29 08:42:25服务器做了设置...会定时资源回收的.不这样做服务器也受不了... 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
net_lover
 
(【孟子E章】) 

等 级: 
3
3
更多勋章 #12楼 得分:0回复于:2009-07-29 09:02:01String u = Request.QueryString["ReturnUrl"]; 
if(u == null || u == "") u = "Default.aspx"; 
Response.Redirect(u); 
试试。可能.net版本不同造成的  
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  
 
xu20032
 


等 级: 
 #13楼 得分:0回复于:2009-07-29 12:07:32都不行呀,同样的代码,过去在我的服务器上也是记得住登录的,这会转到虚拟主机上就不行了。 

我是在.net 1.1上搞的,服务器是2.0 

这是为什么呢? 
 
--------------------编程问答-------------------- 看看cookies 的作用域呢 --------------------编程问答-------------------- 作用域应该没问题吧,因为:

1)还是能记住好像60分钟。
2)同一页上的另一段cookies代码,保留用户名的,是可以用的,长期不掉。

Dim mycookie As HttpCookie = New HttpCookie("cookie_name1", Server.UrlEncode(strusrname))
mycookie.Expires = DateTime.Now.AddYears(1)
Response.Cookies.Add(mycookie) --------------------编程问答-------------------- ding --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 别你一台机子试
让大家一起帮你试试 
还有 用ie不行的话 用火狐试试 可能是浏览器的问题 --------------------编程问答-------------------- 不定 --------------------编程问答-------------------- 你直接看看你这个cookie的物理文件,30分钟后它啥样子 --------------------编程问答-------------------- 找到那个cookie 看以看吧 --------------------编程问答-------------------- 你30分钟后看看Page.User.Identity.Name是多少 --------------------编程问答--------------------  可以在全局应用程序Global.asax里的Application_Start,Session_Start,Application_Error,Session_End,Application_End 里面去做几个操作数据库的代码,或者直接弹出一句话试下,看看有什么异常没 --------------------编程问答-------------------- 个人分析 首先不是程序的问题 cookie已经可以正常设置,只是隔半个小时丢失。
此种原因可能是跟 asp。net三种登录方式 与 验证方式有关 
在web.config中和 iis中设置一下 然后再试试
<authentication mode= "Passport"/>
--------------------编程问答-------------------- 我觉得1/2是 身份验证的事,你换个 浏览器 或者让别人帮你试试 应该不会出现问题。

<authentication mode= "[Windows|Forms|Passport|None]"/>
上个是passport身份验证

--------------------编程问答-------------------- <forms name="login_name" loginUrl="login.aspx" timeout="60" path="/" /> 

是不是timeout=60搞得鬼?
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,