更改ASP.NET会话状态Cookie的到期日期但是,我遇到的一个问题是默认情况下ASP.NET会话cookie设置为在浏览器关闭时过期。http://ahb.me/43e我尝试设置自己的ASP.NET_SessionIdcookie并使用类似于以下代码的内容修改cookie的过期时间:Response.Cookies["ASP.NET_SessionId"].Expires=DateTime.Now.AddMonths(1);这些方法都不起作用,它们都设置了第二个同名的cookie。有没有办法更改会话cookie的到期日期?我建议您使用FormsAuthentication来跟踪登录用户。您可以使用持久性FormsAuthenticationCookie来实现您想要的。或者,如果你真的想使用会话状态,试试这个技巧。基于Joe的答案中的链接,我想出了这种方法:publicvoidApplication_PostRequestHandlerExecute(objectsender,EventArgse){UpdateSessionCookieExpiration();}//////将会话cookie的到期日期更新为会话的到期日期。/////////默认情况下,ASP.NET会话cookie没有过期日期,///这意味着cookie在浏览器关闭后被清除(除非设置了///浏览器最多类似于“记住你离开的地方”设置)。///通过设置到期日期,我们可以在///浏览器关闭后保留会话cookie。///privatevoidUpdateSessionCookieExpiration(){varhttpContext=HttpContext.Current;varsessionState=httpContext?.Session;如果(sessionState==null)返回;varsessionStateSection=ConfigurationManager.GetSection("system.web/sessionState")asSessionStateSection;varsessionCookie=httpContext.Response.Cookies[sessionStateSection?.CookieName??"ASP.NET_SessionId"];如果(sesessionCookie==null)返回;sessionCookie.Expires=DateTime.Now.AddMinutes(sessionState.Timeout);sessionCookie.HttpOnly=true;sessionCookie.Value=sessionState.SessionID;这段代码可以插入到Global.asax.cs只是一个猜测:也许在web.config中编辑session.configuration可能会改变cookie过期时间?你可以在这里看看吗?我认为尝试长时间保持会话是错误的方法,并且会限制您的可扩展性。会话cookie指向由IIS在服务器上维护的特定会话。通常,您希望在用户关闭浏览器后关闭会话,以免为非活动用户占用所有可用的服务器资源。您希望关闭离开用户的会话,并让新到达的用户可以使用资源。这就是会话cookie过期的原因。如果你想在用户关闭浏览器后保持一些用户状态,你可以随时查看“个人资料”之类的东西。或者,如果它是购物车或其他东西,您可以将购物车保存在数据库中,然后在用户再次登录时将其重新连接到用户。汤姆的回答几乎对我有用,除了将cookie转换为变量并设置其属性。我必须像这样直接设置对象的属性:HttpContext.Current.Response.Cookies["ASP.NET_SessionId"].Expires=expiryDate;HttpContext.Current.Response.Cookies["ASP.NET_SessionId"].HttpOnly=true;HttpContext.Current.Response.Cookies["ASP.NET_SessionId"].Value=sessionState.SessionID;我仍然将cookie转换为变量以检查它是否为null,如果是则返回它。以上就是C#学习教程:更改ASP.NET会话状态cookie的过期日期。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
