ASP.Net 只读 session

标签 asp.net httpsession inproc

我进行了以下简单的测试:

  • 在 web.config 中,我们有: `sessionState timeout=40 mode=InProc `
  • 在页面标签
  • 中设置了 `EnableSessionState = "ReadOnly"` 的空页面
  • 隐藏代码:
  • protected void Page_Load(object sender, EventArgs e)
    {
    
        if (Session["dt"] == null)
            Session["dt"] = DateTime.Now;
    
        Session["dt"] = ((DateTime)Session["dt"]).AddYears(1);
        Response.Write(Session["dt"].ToString());
    }
    

    并发回发的结果如下:

    1- 13/11/2015 10:00:00
    2- 13/11/2016 10:00:00
    3- 13/11/2017 10:00:00
    4- 13/11/2018 10:00:00
    5- 13/11/2019 10:00:00
    6- 13/11/2020 10:00:00
    ...

    这清楚地表明 session 变量正在更新。在 MSDN 上,您可以找到以下内容:
    http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx

    You can disable session state for an application by setting the session-state mode to Off. If you want to disable session state for only a particular page of an application, you can set the EnableSessionState value in the @ Page directive to false. The EnableSessionState value can also be set to ReadOnly to provide read-only access to session variables.



    我们几乎在应用程序的每个页面上执行读/写操作。但是,这会阻止同时为同一个客户端运行两个 http 请求。第一个请求应该完成,直到服务器处理第二个请求。经过一些研究,这显然是由于 session 排他锁。出于好奇,我们尝试将 session 状态设置为 ReadOnly,它似乎仍然可以编辑,没有定义独占锁。

    问题:

    1- Readonly 是否意味着 Readonly (所以这里的 asp 中有一个错误)还是别的什么?

    2-只要 session 似乎可以在 ReadOnly 状态下编辑,有什么可担心的,您认为在生产环境中继续使用它是否安全?

    谢谢

    最佳答案

    这个问题看起来很老,但是有很多观点。只是想向使用只读 session 状态并从 InProc 切换到 SQLServer session 的人发出警告。

    虽然您仍然可以在 session 为只读时(不会出现异常)将内容放入 session 中,但在使用 SQLServer session 时,这些更改是 不是 当页面完成它的事情时,提交给数据库。

    所以下一页将不是 查看您对 session 的更改,如果您以前将 session 作为 InProc 并期望它看到更改,这可能会导致奇怪的副作用。

    关于ASP.Net 只读 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26905032/

    相关文章:

    html - 下拉菜单不适用于 MasterPage

    asp.net - 如何在网站上动态显示 SVN 版本?

    tcp - 不同 Goroutine 中的 ZeroMQ 上下文如何通信?

    asp.net - 如何在 ASP.NET webforms 中应用单元测试

    c# - ASP.NET 中的 xslt

    tomcat - 有没有办法在同一个 tomcat 的应用程序中跟踪用户的 session ?

    java - 奇怪的 session 行为..!!在运行时更改用户对象属性

    java - 为什么 getSession() 在随后的请求中没有在短时间内返回相同的 session ?

    asp.net - 对于 asp.net 中的 session 状态模式,InProc 或 SQL Server 哪个更好?

    .net - MVC3 .NET session 随机丢失 session 值并返回为空