SOS! 关于session变量!(在线,解决马上结帖!)

时间:2022-08-06 19:00:59
对  
if session("name")="" then 
    response.redirect(....)
end if
成功实现检验

但是:我又增加对“级别”的验证 ,
page_load中
if session("name")="" then 
    response.redirect(....)
end if
if session("级别")=2 or session("级别")=3 then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if

结果出现错误 ,如下


“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 5:   response.redirect("login.aspx")
行 6:  end if
行 7:  if session("级别")=2 or session("级别")=3 then
行 8:   response.redirect("high.aspx")
行 9:  end if
 

源文件: c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx    行: 7 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value, NumberFormatInfo NumberFormat) +195
   Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value, NumberFormatInfo NumberFormat) +84

[InvalidCastException: 从字符串“”到类型“Double”的强制转换无效。]
   Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value, NumberFormatInfo NumberFormat) +173
   Microsoft.VisualBasic.CompilerServices.ObjectType.ObjTstString(IConvertible conv1, TypeCode tc1, IConvertible conv2, TypeCode tc2) +53
   Microsoft.VisualBasic.CompilerServices.ObjectType.ObjTst(Object o1, Object o2, Boolean TextCompare) +1317
   ASP.edit_aspx.page_load(Object sender, EventArgs e) in c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx:7
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +753

请csdn的各位兄弟姐妹们,帮帮忙!!!
试了都快两个点了,还不行————/全是眼泪!/

20 个解决方案

#1


不要用中文

Session("index")=value
其中index为索引项,相当于一个变量,能用中文的变量吗?

#2


比如把session("级别")改为session("grade")

#3


把session("级别")取出来的值是OBJECT,向下转型必须显式的转换。
在C#中:
((DOUBLE) session("级别")) =  2

#4


session("真名")="" then ...
已成功实现

但是,我现在想加入对“级别”的判断,
却没有实现!!!

请大家多多帮忙!!!

#5


不要用中文

#6


>>if session("级别")=2 or session("级别")=3 then

If System.Convert.ToInt32(session("级别"))=2 or System.Convert.ToInt32(session("级别"))=3 Then

#7


感谢xueyhfeng、 zhongkeruanjian:
vb 如何转变这个对象类型???

#8


晕,

CSDN的数据添加调用有点问题,我的回复竟然成这样的了

#9


System.Convert.ToInt32()

#10


非常感谢您的多次答复:
但是,由于我的水平问题还没解决呀
代码如下:
<script language=vb runat=server>
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if  ——————/这部分已经实现,但是加上下面的部分,结果错误。/

if System.Convert.ToInt32(session("级别"))="2" or System.Convert.ToInt32(session("级别"))="3" then
response.redirect("high.aspx")
end if
end sub

</script>


“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 5:   response.redirect("login.aspx")
行 6:  end if
行 7:  if System.Convert.ToInt32(session("级别"))="2" or System.Convert.ToInt32(session("级别"))="3" then
行 8:   response.redirect("high.aspx")
行 9:  end if
 

源文件: c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx    行: 7 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
   System.String.System.IConvertible.ToInt32(IFormatProvider provider) +40
   System.Convert.ToInt32(Object value) +36
   ASP.edit_aspx.page_load(Object sender, EventArgs e) in c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx:7
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

#11


if System.Convert.ToInt32(session("级别"))="2" or System.Convert.ToInt32(session("级别"))="3" then

我晕,2,3不要打引号,打了引号就成了字符串了,

#12


把引号去掉,

如果要用字符串,就把System.Convert.ToInt32()改为System.Convert.ToString()

#13


if session("级别")=cstr(2) or session("级别")=cstr(3) then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if

转换为字符就可以了。

#14


非常感谢您的多次答复:
但是,由于我的水平问题还没解决呀
代码如下:
<script language=vb runat=server>
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if  ——————/这部分已经实现,但是加上下面的部分,结果错误。/

if System.Convert.ToInt32(session("级别"))=2 or System.Convert.ToInt32(session("级别"))=3 then
response.redirect("high.aspx")
end if
end sub

</script>



“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 5:   response.redirect("login.aspx")
行 6:  end if
行 7:  if System.Convert.ToInt32(session("级别"))=2 or System.Convert.ToInt32(session("级别"))=3 then
行 8:   response.redirect("high.aspx")
行 9:  end if
 

源文件: c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx    行: 7 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
   System.String.System.IConvertible.ToInt32(IFormatProvider provider) +40
   System.Convert.ToInt32(Object value) +36
   ASP.edit_aspx.page_load(Object sender, EventArgs e) in c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx:7
   System.Web.UI.Control.OnLoad(EventArgs e)
   System.Web.UI.Control.LoadRecursive()
   System.Web.UI.Page.ProcessRequestMain()

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573 

#15


真不知道为什么zhongkeruanjian(鸭子) 说的方法还是行不通,错误原因见上
按照 menuvb(像风一样漂泊) :结果只是对session("真名")进行判断
but  ——对“级别”根本没反应
测试数据  真名(varchar):“理想”  
          级别(char): “3”

<script language=vb runat=server>
 
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if 
if session("级别")=cstr(2) or session("级别")=cstr(3) then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if
end sub

</script>



各位能否在帮忙看一下!!!
不胜感激!!!
  
 

#16


<script language=vb runat=server>
 
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if 
if System.Convert.ToString(session("级别"))="2" or System.Convert.ToString(session("级别"))="3" then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if
end sub

</script>

#17


谢谢xueyhfeng
编程的机器刚刚关掉

非常感谢你的多次耐心答复!!!
我明天试试,:D

#18


if System.Convert.ToString(session("级别"))="2" or System.Convert.ToString(session("级别"))="3" then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if
/////////
如果这样System.Convert.ToString(session("级别"))转换字符串不是很麻烦吗?
这样写不是更好if session("级别").ToString()="2"

#19


测试数据  真名(varchar):“理想”  
          级别(char): “3”
你的 session("级别"))是CHAR类型的?
这就用liuzhonghe(呆头鹅) 方法

#20


谢谢各位帮忙!
原来是int
后来改成char的

#1


不要用中文

Session("index")=value
其中index为索引项,相当于一个变量,能用中文的变量吗?

#2


比如把session("级别")改为session("grade")

#3


把session("级别")取出来的值是OBJECT,向下转型必须显式的转换。
在C#中:
((DOUBLE) session("级别")) =  2

#4


session("真名")="" then ...
已成功实现

但是,我现在想加入对“级别”的判断,
却没有实现!!!

请大家多多帮忙!!!

#5


不要用中文

#6


>>if session("级别")=2 or session("级别")=3 then

If System.Convert.ToInt32(session("级别"))=2 or System.Convert.ToInt32(session("级别"))=3 Then

#7


感谢xueyhfeng、 zhongkeruanjian:
vb 如何转变这个对象类型???

#8


晕,

CSDN的数据添加调用有点问题,我的回复竟然成这样的了

#9


System.Convert.ToInt32()

#10


非常感谢您的多次答复:
但是,由于我的水平问题还没解决呀
代码如下:
<script language=vb runat=server>
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if  ——————/这部分已经实现,但是加上下面的部分,结果错误。/

if System.Convert.ToInt32(session("级别"))="2" or System.Convert.ToInt32(session("级别"))="3" then
response.redirect("high.aspx")
end if
end sub

</script>


“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 5:   response.redirect("login.aspx")
行 6:  end if
行 7:  if System.Convert.ToInt32(session("级别"))="2" or System.Convert.ToInt32(session("级别"))="3" then
行 8:   response.redirect("high.aspx")
行 9:  end if
 

源文件: c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx    行: 7 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
   System.String.System.IConvertible.ToInt32(IFormatProvider provider) +40
   System.Convert.ToInt32(Object value) +36
   ASP.edit_aspx.page_load(Object sender, EventArgs e) in c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx:7
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

#11


if System.Convert.ToInt32(session("级别"))="2" or System.Convert.ToInt32(session("级别"))="3" then

我晕,2,3不要打引号,打了引号就成了字符串了,

#12


把引号去掉,

如果要用字符串,就把System.Convert.ToInt32()改为System.Convert.ToString()

#13


if session("级别")=cstr(2) or session("级别")=cstr(3) then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if

转换为字符就可以了。

#14


非常感谢您的多次答复:
但是,由于我的水平问题还没解决呀
代码如下:
<script language=vb runat=server>
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if  ——————/这部分已经实现,但是加上下面的部分,结果错误。/

if System.Convert.ToInt32(session("级别"))=2 or System.Convert.ToInt32(session("级别"))=3 then
response.redirect("high.aspx")
end if
end sub

</script>



“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 5:   response.redirect("login.aspx")
行 6:  end if
行 7:  if System.Convert.ToInt32(session("级别"))=2 or System.Convert.ToInt32(session("级别"))=3 then
行 8:   response.redirect("high.aspx")
行 9:  end if
 

源文件: c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx    行: 7 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
   System.String.System.IConvertible.ToInt32(IFormatProvider provider) +40
   System.Convert.ToInt32(Object value) +36
   ASP.edit_aspx.page_load(Object sender, EventArgs e) in c:\inetpub\wwwroot\WebApplication1\agent\edit.aspx:7
   System.Web.UI.Control.OnLoad(EventArgs e)
   System.Web.UI.Control.LoadRecursive()
   System.Web.UI.Page.ProcessRequestMain()

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573 

#15


真不知道为什么zhongkeruanjian(鸭子) 说的方法还是行不通,错误原因见上
按照 menuvb(像风一样漂泊) :结果只是对session("真名")进行判断
but  ——对“级别”根本没反应
测试数据  真名(varchar):“理想”  
          级别(char): “3”

<script language=vb runat=server>
 
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if 
if session("级别")=cstr(2) or session("级别")=cstr(3) then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if
end sub

</script>



各位能否在帮忙看一下!!!
不胜感激!!!
  
 

#16


<script language=vb runat=server>
 
sub page_load(sender as object,e as eventargs)
if session("真名")="" then
response.redirect("login.aspx")
end if 
if System.Convert.ToString(session("级别"))="2" or System.Convert.ToString(session("级别"))="3" then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if
end sub

</script>

#17


谢谢xueyhfeng
编程的机器刚刚关掉

非常感谢你的多次耐心答复!!!
我明天试试,:D

#18


if System.Convert.ToString(session("级别"))="2" or System.Convert.ToString(session("级别"))="3" then 
    response.write(您的级别不够!您在进级后可访问该功能模块!!!)
end if
/////////
如果这样System.Convert.ToString(session("级别"))转换字符串不是很麻烦吗?
这样写不是更好if session("级别").ToString()="2"

#19


测试数据  真名(varchar):“理想”  
          级别(char): “3”
你的 session("级别"))是CHAR类型的?
这就用liuzhonghe(呆头鹅) 方法

#20


谢谢各位帮忙!
原来是int
后来改成char的

#21