更好地解释会话Asp.Net

时间:2011-10-15 09:21:25

标签: asp.net session refresh

我正在尝试第一次使用会话,并希望以更好,更简单的方式了解它。

我正在使用GUID创建一个会话变量,并使用该GUID创建一个文件夹并存储该值,如下所示

 If Session("tempDir") Is Nothing Then
        Dim tempDir As String
        tempDir = Path.GetRandomFileName()
        tempDir = tempDir.Substring(0, tempDir.LastIndexOf("."))
        IO.Directory.CreateDirectory(Server.MapPath("Uploads/" & tempDir))
        IO.Directory.CreateDirectory(Server.MapPath("Downloads/" & tempDir))
        Session.Add("tempDir", tempDir)
        currentDirectory.Value = Session("tempDir").ToString
        CopySession.Text = currentDirectory.Value
    End If

这是生成GUID的代码:

 function randomString(length) {
            var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');

            if (!length) {
                length = Math.floor(Math.random() * chars.length);
            }

            var str = '';
            for (var i = 0; i < length; i++) {
                str += chars[Math.floor(Math.random() * chars.length)];
            }
            return str;
        }

我正在使用下面的代码来获取页面上的回发,但是当我刷新它删除该值并给我一个NULL值。

If Page.IsPostBack Then
            If Session("tempDir") Is Nothing Then
                Dim tempDir As String
                tempDir = Path.GetRandomFileName()
                tempDir = tempDir.Substring(0, tempDir.LastIndexOf("."))
                IO.Directory.CreateDirectory(Server.MapPath("Uploads/" & tempDir))
                IO.Directory.CreateDirectory(Server.MapPath("Downloads/" & tempDir))
                Session.Add("tempDir", tempDir)
                currentDirectory.Value = Session("tempDir").ToString
                CopySession.Text = currentDirectory.Value

            End If
End If

我如何retrieve tempDir价值?任何人都可以给我一些详细的解释,因为我完全混淆了。

1 个答案:

答案 0 :(得分:1)

从IF

中删除这两行
        currentDirectory.Value = Session("tempDir").ToString
        CopySession.Text = currentDirectory.Value

将是

If Page.IsPostBack Then
            If Session("tempDir") Is Nothing Then
                Dim tempDir As String
                tempDir = Path.GetRandomFileName()
                tempDir = tempDir.Substring(0, tempDir.LastIndexOf("."))
                IO.Directory.CreateDirectory(Server.MapPath("Uploads/" & tempDir))
                IO.Directory.CreateDirectory(Server.MapPath("Downloads/" & tempDir))
                Session.Add("tempDir", tempDir)
            End If

            currentDirectory.Value = Session("tempDir").ToString
            CopySession.Text = currentDirectory.Value
End If

这里有什么不同,如果会话不存在,那就去设置吧。如果tempDir的会话存在,因为你只是设置它,以太从前一个或其他调用中获取它。我希望这会给你你想知道的东西,或者告诉我你不理解的东西。

会话

会话是Dictionary个值,在会话激活时(例如20分钟)与每个用户连接。当用户与站点交互时,此数据跟随此用户,您可以使用会话设置,读取或删除它们。 当页面加载在开始时读取的会话数据时,您可以在页面上使用它们,并在页面上卸载保存回会话管理器的会话数据。