ASP.NET 应用程序中的会话变量超时
在我的网络应用程序中,我使用一些会话变量,这些变量在我登录时设置:
例如 Session("user_id") = reader("user_id")
我通过我的应用程序使用它。
当会话变量超时时,这主要是在连接到数据库时引发错误,因为某些查询需要 session("user_id")
。
如何设置会话变量,以便一旦超时就无法进入登录页面,或者如何至少增加可用的时间长度?
In my web app I'm using some session variables, which are set when I login:
e.g. Session("user_id") = reader("user_id")
I use this through my app.
When the session variable times out, this throws errors mainly when connecting to the database as session("user_id")
is required for some queries.
How can I set my session variables so that once they are timed out to go to the login page or how can at least increase the length of time the are available?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我猜您正在使用表单身份验证。这里的技巧是确保您的表单身份验证在会话之前过期。
我在这个答案中写过这个:
例如:
配置表单身份验证 - 这将超时设置为 60 分钟:
将会话过期时间延长到更长的时间:
在您的 <您后面的 code>Login.aspx 代码还可以执行
Session.Clear();
在分配会话值之前删除过时的会话数据。I'm guessing you're using Forms Authentication. The trick here is to ensure that your Forms Authentication expires before the session does.
I wrote about this in this answer here:
For example:
Configure your Forms Authentication - this sets the timeout to 60 minutes:
Extend Session expiry to a longer time:
In your
Login.aspx
code behind you could also do aSession.Clear();
to remove stale session data before assigning session values.过去,我在每个页面上使用基页或母版页(登录页面例外)来读取会话令牌以查看用户当前是否已登录。
如果它读取到 null,它会保存当前 url 并重定向到登录页面。
登录后,它会读取保存的 URL 并将用户重定向回所请求的页面。
增加会话超时值是 IIS 中的一项设置。
In the past I've used a base page or master page on every page (making an exception for the login page) that reads a session token to see if a user is logged in currently.
If it ever reads a null it saves the current url and redirects to the login page.
After logging in it reads the saved url and redirects the user back to the requested page.
Increasing the session timeout value is a setting in IIS.
检查它们是否 = null 执行
Response.Redirect("Home.aspx");
它位于 sessionState元素
Check if they are = null do a
Response.Redirect("Home.aspx");
Its in the web.config within the sessionState element
我认为很多人包装他们的会话调用以提供“延迟加载”模式。像这样的事情:
I think a lot of people wrap their session calls to provide a "lazy load" pattern. Something like this: