+ -
当前位置:首页 → 问答吧 → Session丢失问题

Session丢失问题

时间:2011-12-24

来源:互联网

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports DAL.zl.DAL_zl
Imports BLL.zl.BLL_zl
Imports System.Text

Partial Public Class zl_takemat
  Inherits System.Web.UI.Page
  Dim zltakematbll As New zl_takematBLL()
  Dim systemthreetablebll As New system_threetableBLL()
  Dim baseprojectpbll As New baseprojectpBLL()
  Dim basematbll As New base_MatBLL()
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If Session("userName") = "" Or Session("userName") Is Nothing Then
  Response.Write("<script>alert('登陆超时,请重新登录!');top.location='../Default.aspx';</script>")
  End If
  If Not IsPostBack Then

  BindDropdownList()
  PageBind()
  End If
  End Sub
#Region "加载绑定数据"
  Public Sub PageBind()
  If Session("userName") = "" Or Session("userName") Is Nothing Then
  Response.Write("<script>alert('登陆超时,请重新登录!');top.location='../Default.aspx';</script>")
  End If
  Dim ds As New DataSet()
  If Session("realName") = "系统管理员" Then
  ds = zltakematbll.GetList(" order by a.takeid desc ")
  Else
  ds = zltakematbll.GetList(" and comp_id=" & Integer.Parse(Session("compId")) & " order by a.takeid desc ")
  End If
  gridview_takemat.DataSource = ds
  gridview_takemat.DataBind()
  End Sub
#End Region

我在多处地方写了判断 还是出错 本来在Page_load 中写一个就好的
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="1"/>
我设置1分钟过期测试。。。 什么原因报一下错呢?
值不能为空。
参数名: String 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentNullException: 值不能为空。
参数名: String

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  

堆栈跟踪: 


[ArgumentNullException: 值不能为空。
参数名: String]
  System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +7471210
  System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +119
  PDMUI.zl_takematEdit.PageBind() +78
  PDMUI.zl_takematEdit.Page_Load(Object sender, EventArgs e) +278
  System.Web.UI.Control.OnLoad(EventArgs e) +99
  System.Web.UI.Control.LoadRecursive() +50
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

 

作者: somnusnrlq   发布时间: 2011-12-24

使用basepage判断session
启用asp.net状态服务,保存SESSION
数据库查询用户状态

作者: wuyq11   发布时间: 2011-12-24

Session("compId")这个值是Nothing导致的。

作者: CloneCenter   发布时间: 2011-12-24

做一个 pageBase页面,让你所有的页面都继承它,

在pageBase 的pageLoad中判断session是否存在,如果不存在,则跳至 login页

再有,设置 asp.net_status 的服务自动启动

作者: keenweiwei   发布时间: 2011-12-24

<sessionState mode="StateServer" 开启ASP.NET 状态服务

作者: q107770540   发布时间: 2011-12-24

问题这样解决了 求指教 
 If Session("userName") = "" Or Session("userName") Is Nothing Then
  Response.Write("<script>alert('登陆超时,请重新登录!');top.location='../Default.aspx';</script>")
  Return
  End If 多了一个return

作者: somnusnrlq   发布时间: 2011-12-26