有个管理页面,未登录的情况下不能访问,于是在这个页面里加了个
if(Session["user"].Equal(""))
{
...............
}
在登录页面里加了个
if()
{
Session["user"]=user;
}
else
{
Session["user"]=""
}(ASP中是这样写的,在ASP.NET中编译也通过了,但不知是不是最佳方案),但是跳转到管理页面上时,就报错,说的是有对像没有实例化就被使用,并指明了是if(Session["user"].Equal("")),开始我以为是Session["user"]的值为null,搞了半天,Session["user"]的值果然是null,于是在网上找到一篇文单说,用先判断有无,再判断其值的办法可解困,即:
if(Session["user"]!=null)
{
   if(Session["user"].Equal(""))
}
....
一用,果然是药到病除,但仔细一看,怎么不对劲儿呢?(咋就不对劲呢?咋就不对劲呢?),如果用户在地址栏里直接输入这个页面的地址,Session["user"]本来就为null,那不是所有的工作都白做了吗.
这是咋回事儿呢?

解决方案 »

  1.   

    在web.config里面配置,使用form验证。
    <authentication mode="Forms">
                <forms name=".ASPXAUTH" loginUrl="login.aspx" protection="None" timeout="60" path="/"></forms>
                </authentication>

    <authorization>
        <deny users="?"/>
        <allow users="*" />
    </authorization>
      

  2.   

    不只是这个页面,还有好多好多的Session变量哦,ASP.NET里面是有Session,但和ASP的Session是不是同一个概念哦
      

  3.   

    你把这一段修改如下:if(Session["user"] != null && Session["user"].Equal(""))
    {
    ...............
    }
    因为当session没有值时,你强行使用Equal,将会使它转换为文本,把null值拿来转换,自然出错.
      

  4.   

    http://www.cnblogs.com/hedonister/archive/2005/05/13/154788.html