Сессия неожиданно исчезает - PullRequest
0 голосов
/ 26 апреля 2011

Сайт является сайтом покупки / продажи, а страница, с которой приходит код, является страницей "Добавить товар".

Проблема в том, что сессия («изменение») по какой-то причине становится ничем, я не могу найти никаких ошибок. В payment.aspx есть кнопка, которая отправляет меня обратно на страницу с сеансом («изменить»). Причина, по которой я вижу проблему, заключается в том, что когда я пытаюсь что-то отредактировать, категория возвращается к первой в списке. и когда я отлаживаю, я вижу, что сессия - ничто, хотя это должно быть что-то

Вот код:

 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnSubmit.Click
        If Not stats > 0 Then
            If Session("change") IsNot Nothing Then
                Dim dc As New DataClassesDataContext
                Dim getP = From prod In dc.Products _
                           Where prod.ProductID = CInt(Session("change")) _
                           Select prod

                If getP.Any Then
                    If rdbSell.Checked = True Then
                        getP.FirstOrDefault.BuySell = True
                    Else
                        getP.FirstOrDefault.BuySell = False
                    End If
                    If ddlSubSubcat.SelectedValue IsNot String.Empty Then
                        getP.FirstOrDefault.CategoryID = CInt(ddlSubSubcat.SelectedValue)
                    Else
                        getP.FirstOrDefault.CategoryID = CInt(ddlSubCat.SelectedValue)
                    End If

                    getP.FirstOrDefault.Content = txtContent.Text.Replace(Environment.NewLine, "<br />")
                    getP.FirstOrDefault.CountyID = CInt(ddlCounty.SelectedValue)
                    getP.FirstOrDefault.E_mail = txtEmail.Text
                    getP.FirstOrDefault.Date = DateTime.Now
                    getP.FirstOrDefault.Active = 0
                    getP.FirstOrDefault.Alias = txtAlias.Text.Replace("'", "''")
                    getP.FirstOrDefault.ShowEmail = 0
                    Dim PreID As Integer = getP.FirstOrDefault.ProductID
                    If chkShowEmail.Checked = True Then
                        getP.FirstOrDefault.ShowEmail = 1
                    Else
                        getP.FirstOrDefault.ShowEmail = 0
                    End If
                    If chkShowPhone.Checked = True Then
                        getP.FirstOrDefault.ShowPhone = 1
                    Else
                        getP.FirstOrDefault.ShowPhone = 0
                    End If
                    getP.FirstOrDefault.Headline = txtHeadline.Text
                    getP.FirstOrDefault.Password = txtPassword.Text
                    getP.FirstOrDefault.Phone = txtPhone.Text
                    getP.FirstOrDefault.Price = txtPrice.Text

                    If chkUnknown.Checked = True Then
                        getP.FirstOrDefault.YearModel = String.Empty
                    Else
                        getP.FirstOrDefault.YearModel = ddlYear.SelectedValue
                    End If

                    For Each item In libPictures.Items
                        Dim i As String = item.ToString
                        Dim imagecheck = From img In dc.Pictures _
                                         Where img.Name = i And img.ProductID = CInt(Session("change")) _
                                         Select img

                        If imagecheck.Any Then
                        Else
                            Dim img As New Picture
                            img.Name = item.ToString

                            img.ProductID = CInt(Session("change"))
                            dc.Pictures.InsertOnSubmit(img)
                            dc.SubmitChanges()
                        End If
                    Next

                    dc.SubmitChanges()

                    Session.Remove("change")
                    Response.Redirect("~/precheck.aspx?id=" + PreID.ToString)
                End If
            Else
                Dim dc As New DataClassesDataContext
                Dim prod As New Product
                If rdbSell.Checked = True Then
                    prod.BuySell = True
                Else
                    prod.BuySell = False
                End If
                If ddlSubSubcat.DataValueField IsNot String.Empty Then
                    prod.CategoryID = CInt(ddlSubSubcat.SelectedValue)
                Else
                    prod.CategoryID = CInt(ddlSubCat.SelectedValue)
                End If

                prod.Content = txtContent.Text.Replace(Environment.NewLine, "<br />")
                prod.CountyID = CInt(ddlCounty.SelectedValue)
                prod.E_mail = txtEmail.Text
                prod.Date = DateTime.Now
                prod.Active = 0
                prod.Alias = txtAlias.Text.Replace("'", "''")
                prod.ShowEmail = 0
                If chkShowEmail.Checked = True Then
                    prod.ShowEmail = 1
                Else
                    prod.ShowEmail = 0
                End If
                If chkShowPhone.Checked = True Then
                    prod.ShowPhone = 1
                Else
                    prod.ShowPhone = 0
                End If
                prod.Headline = txtHeadline.Text
                prod.Password = txtPassword.Text
                prod.Phone = txtPhone.Text
                prod.Price = txtPrice.Text

                If chkUnknown.Checked = True Then
                    prod.YearModel = String.Empty
                Else
                    prod.YearModel = ddlYear.SelectedValue
                End If

                dc.Products.InsertOnSubmit(prod)
                dc.SubmitChanges()
                Dim PreID As Integer = prod.ProductID

                For Each item In libPictures.Items
                    Dim img As New Picture
                    img.Name = item.ToString

                    img.ProductID = prod.ProductID
                    dc.Pictures.InsertOnSubmit(img)
                    dc.SubmitChanges()
                Next
                Session.Remove("change")
                Response.Redirect("./precheck.aspx?id=" + PreID.ToString, False)
            End If
        End If
        stats = 0
        'Catch ex As Exception
        'End Try

    End Sub

1 Ответ

1 голос
/ 27 апреля 2011

Это зависит от того, как приложение управляет состоянием сеанса.Если ваше состояние сеанса управляется InProc, то если пул приложений будет перезагружен, тогда вся информация о вашем сеансе будет потеряна.Если это происходит, это может быть хорошим вариантом для сохранения состояния сеанса в SQL Server, который будет сохраняться между перезапусками пула приложений.

Дополнительная информация:

Обзор состояния сеанса ASP.NET

Рекомендации по управлению состоянием ASP.NET

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