Лучшее объяснение для сессий Asp.Net - PullRequest
1 голос
/ 15 октября 2011

Я пытаюсь использовать сессии впервые и хотел бы узнать об этом лучше и проще.

Я создаю переменную сеанса с использованием 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 Ответ

1 голос
/ 11 февраля 2012

Удалите эти 2 строки из 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 существует, потому что ether вы просто устанавливаете, ether получает его от предыдущего или другого вызова. Я надеюсь, что это даст вам то, что вам интересно, или же скажите мне, что вы не понимаете.

Session

Сеанс представляет собой Словарь значений, который связан с каждым пользователем в течение времени, когда сеанс активен (например, в течение 20 минут). Когда пользователь взаимодействует с сайтом, эти данные следуют за этим пользователем, и вы можете установить их, прочитать их или удалить их, используя сеанс. Когда страница загружает данные сеанса, прочитанные в начале, вы можете использовать их на странице, а на странице выгрузить данные сеанса, сохраненные обратно в держатель сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...