将 cookie 设置为在会话结束时过期? ASP.NET

2024-05-05

我很惊讶我找不到任何答案。

如何将 cookie 中的 sessionid 设置为在会话结束时过期? (当浏览器关闭或用户一段时间不活动时)。

我发现的两个解决方案是

(httpcookie).Expires = HttpContext.Current.Session.Timeout

这给了我一个编译错误,所以我不知道用户在发布之前是否检查了他的代码。另一个是将过期日期设置为 1 天前,我的直觉认为这是错误的。我该怎么做呢?


你说的是非持久性cookie。默认情况下,asp.net 以这种方式发送 cookie。它们之间的主要区别是持久性 cookie 设置了过期值。

因此,如果您不希望 cookie 持续存在,请不要设置过期值。

也就是说,cookie 将保留在内存中,直到浏览器实际关闭为止。假设他们浏览到您的网站并且您设置了一个非持久 cookie。他们做事然后浏览。随后,他们使用相同的浏览器实例返回您的网站。 cookie 仍然会在那里。

现在,如果他们在任何时候关闭浏览器,那么 cookie 就会被清除。

要点是,不要设置过期标头。尤其是当会话日期到期时。会话日期通常仅是未来 20 分钟左右的时间,但到期日期会随着用户浏览您的网站而向前滚动。

=====更新=====

我使用以下代码进行测试:

    protected void Page_Load(object sender, EventArgs e) {
        if (!Page.IsPostBack) {
            HttpCookie c = Request.Cookies["test"];
            if (c != null) {
                Response.Write(String.Format("test value is {0} <br />", c.Value));
            }
        } else {
            HttpCookie c = new HttpCookie("test");
            c.Value = "HERE IT IS";
            Response.Cookies.Add(c);
        }
    }

    protected void Button1_Click(object sender, EventArgs e) {
        Response.Write("clicked<br />");
    }

.aspx 文件有一个简单的按钮,它触发了button1_click 处理程序。当我最初使用任何最新的浏览器(即 firefox、chrome)浏览它时,没有 cookie。单击按钮后,就会设置 cookie。然后我完全关闭浏览器,重新打开并浏览回到该网站。在所有情况下,cookie 都消失了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 cookie 设置为在会话结束时过期? ASP.NET 的相关文章

  • Web UI 中的 .Result 出现死锁

    我正在阅读以下主题http blog stephencleary com 2012 07 dont block on async code html http blog stephencleary com 2012 07 dont bloc
  • PHP 会话未保存

    我把这句话写在我网站每一页的第一行 include restd php 和restd php包含以下几行 session start if isset SESSION id else header location index php 我面
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • Page_ClientValidate 正在验证多次。

    我的问题是 验证摘要消息 警报 显示两次 我无法弄清楚原因 请帮忙 这是代码 function validate javascript function if typeof Page ClientValidate function var
  • 构建 C# Web API - REST

    我即将开始一个 C 项目 我从未使用过 C 我希望在犯下愚蠢的错误并走上错误的道路之前能得到一些实施建议 我想要实现的目标基本上是在服务器上拥有一个可以通过 Web API 访问的 C 应用程序 该应用程序将接受一些字符串变量 然后返回一个
  • 最佳实践:ASP.NET 中的 CSS 或主题?

    什么时候应该使用 ASP NET 主题 什么时候应该使用 CSS 使用其中一种相对于另一种有哪些优点或缺点 我建议使用 CSS 而不是主题 原因是在 CSS 中 您可以修改样式以使其适用于所有浏览器 您可以对主题做同样的事情 但微软的设计师
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • CSS 样式在部分回发时停止工作

    在 ASP net C 应用程序中 我有一个带有自定义 css 的复选框 CSS 文件是 复选框
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • PHP中如何有效防止跨站请求伪造(CSRF)

    我正在努力阻止CSRF https www owasp org index php Cross Site Request Forgery CSRF in php questions tagged php通过以下方式 A SESSION to
  • IIS Express 安装目录在哪里?

    我最近开始了一个 ASP NET 教程 我想测试我用 WebMatrix 制作的页面 然而 有一个错误 Web 服务器配置为不列出该目录的内容 因此 它建议启用目录浏览并转到 IIS Express 安装目录并运行命令 那么它到底位于哪里呢
  • 指定的CGI应用程序遇到错误,服务器终止了进程

    我在 azure 上托管一个 asp net 5 应用程序 代码是为 beta8 编译的 该应用程序在本地环境以及当我在 azure 网站上发布代码时运行良好 我收到一个常见错误 指定的 CGI 应用程序遇到错误 服务器终止了该进程 我能够
  • 在SQLDatasource中使用存储过程时,Gridview不显示

    我以前偶然发现过这个问题 我知道这是一个常见问题 一个相关的问题是网格视图为空 https stackoverflow com q 5596451 777982 但这并不能解决我的问题 理想情况下 我想要的是当我单击 查找 按钮时根据文本框
  • MVC3 OutputCache VaryByHeader=未设置 Cookie

    我有以下操作方法 HttpGet Authorize OutputCache Duration 60 VaryByHeader Cookie Location OutputCacheLocation Any public ActionRes
  • 连接管理 ASP.net

    如何管理 ASP Net 应用程序中的数据库连接 我的理解告诉我 最好 的方法是打开连接 进行查询 关闭连接 并多次执行此操作 因为连接池使成本可以忽略不计 当我有一个 DAL 时 问题就出现了 其中每个方法都管理自己的连接 例如 User
  • 还记得我的 Cookie 最佳实践吗?

    我读到了许多关于这个论点的老问题 我认为最好的做法是设置一个 cookieusername user id和一个随机令牌 相同 cookie 的数据在 cookie 创建时存储在数据库中 当用户拥有 cookie 时 它 们会进行比较 co
  • 如何在 asp.net 文本框中保留前导空格

    我有一个文本框 Web 控件 它会自动修剪其内容中的任何前导空格 因此当我收到文本时 它与用户最初编写的内容不同 如果他输入了前导空格 有没有办法禁用这个功能 好吧 只有一种解决方案可以覆盖默认行为 那就是编写一个 javascript 函
  • 非静态方法需要一个目标

    private PMS USERS currUser private bool validateUserName dbContext new PmsEntities var validateUser dbContext PMS USERS
  • 在静态类中存储连接 (ASP.NET)

    由于我使用的是 Postgresql 并且无法使用 LINQ to SQL 因此我编写了自己的包装器类 这是学生课程的一部分 public class Student User private static NpgsqlConnection
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处

随机推荐