【问题标题】:Insert datetime now in db field when session expire or browser closed当会话过期或浏览器关闭时,现在在 db 字段中插入日期时间
【发布时间】:2013-10-08 14:04:09
【问题描述】:

当我登录并签入时间时,时间通过存储过程插入到数据库字段中。但是当我注销或关闭浏览器结帐时间时未插入(因为不处理此问题)并且当我再次登录时,该字段仍处于选中状态而不是结帐状态。我怎么能在asp.net中处理这个?当我注销或关闭浏览器时,我想现在自动插入日期时间。

当我点击结帐链接时会插入结帐时间,但我希望在会话过期或浏览器关闭时插入结帐时间。

【问题讨论】:

  • 关键是会话过期。默认情况下,这设置为 20 分钟。只有在那之后才会调用 Session_End 事件。你可以改变它,但我认为你被限制为 1 分钟的间隔。请注意,更改会话超时会在 X 分钟不活动(调用服务器)后删除会话 cookie。

标签: asp.net vb.net sql-server-2008


【解决方案1】:

听起来你有两个问题:

  1. 当用户点击Check Out时,如何将日期时间插入数据库?

    DateTime.Now 值用作将签出值插入数据库表的存储过程的参数。

  2. 如何处理用户点击Check Out或关闭浏览器?

    要处理用户点击Check Out,只需将点击事件处理程序附加到服务器控件(即LinkButtonOnClick 属性),如下所示:

    <asp:LinkButton id="LinkButton1" 
                    Text="Check Out" 
                    OnClick="LinkButton1_Click" 
                    runat="server"/>
    
    Sub LinkButton1_Click(sender As Object, e As EventArgs) 
        ' Call stored procedure and send DateTime.Now as check out value
    End Sub
    

    要处理用户关闭浏览器的问题,因为这是一个客户端事件,您可以使用 JavaScript/jQuery 或 unload 事件,但是像 Detect Browser Close on Asp.net 这样的解决方案有其自身的缺点和问题。最安全的方法是在global.asax 中处理Session_End 事件,如下所示:

    Sub Session_End(Object sender, EventArgs E)
        ' Call stored procedure and send DateTime.Now as check out value
    End Sub
    

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2011-04-16
    • 1970-01-01
    • 2015-08-12
    • 2011-02-01
    • 2013-11-17
    • 2011-04-21
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多