Session丢失问题
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
[解决办法]
使用basepage判断session
启用asp.net状态服务,保存SESSION
数据库查询用户状态
[解决办法]
Session("compId")这个值是Nothing导致的。
[解决办法]
做一个 pageBase页面,让你所有的页面都继承它,
在pageBase 的pageLoad中判断session是否存在,如果不存在,则跳至 login页
再有,设置 asp.net_status 的服务自动启动
[解决办法]
<sessionState mode="StateServer" 开启ASP.NET 状态服务