asp中session的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp中session的问题相关的知识,希望对你有一定的参考价值。

我的session怎么只能在当前页里有用!
就是说我在当前页登陆后转到其它页都可以!
但是我再开一张新页面输一样的地址!就无法读取session!
在登陆成功后的是这样写的session("user")=rs("username")
转到(aa.asp)是这样写的if session("user")=""then ...........
可以读取session
其它的页面(如mm.asp)是if session("user")=""then ...........
从aa.asp转到mm.asp也能读取session
可是自己再开一张页面输入mm.asp 就不可以了!读不到session了

当然。。。session也叫会话,他是以一次浏览器会话为基础的。如果你新开一个浏览器就等于开启了一个新的会话,当然不能共享到session了,不然的话那不是很危险。。

如果你需要这样共享数据的话,用cookies吧。
参考技术A 我原来用的是session,但session太费服务器内存,现在换成了cookies了!
用法同session差不多!

response.cookies("abc")="pass"

if request.cookies("abc")<>"pass" then
response.write"没有经过验证"
response.end
end if

asp.net MVC Session锁的问题

一直在用Session,对Session锁并没有太多的关注,可能是平时没有注意。前段时间突然发现,一个Ajax Get请求,直接访问地址,只需要几十ms,但是在页面中加载,却需要2s。最后定位到Session的问题。

具体的内容我在园里看了下别人的文章:http://blog.csdn.net/paolei/article/details/38052129

不过,也发现了一些问题。

比如,这个例子:

后端:

    public class MyController : Controller
    {
        // GET: My
        public ActionResult Index()
        {
            return View();
        }
        [HttpGet]
        public string GetTest1()
        {            
            Thread.Sleep(1000);
            return "GetTest1";
        }
        [HttpGet]
        public string GetTest2()
        {
            return "GetTest2";
        }
    }

  前端:

    $.get("GetTest1", function (resp) {
        console.log(resp); // server response
    });
    $.get("GetTest2", function (resp) {
        console.log(resp); // server response
    });

直接使用上面的代码,没有访问过Session,代码默认不进行Session锁,运行结果:

GetTest2
GetTest1

当在Controller中写Session后:

        public ActionResult Index()
        {
            Session["A"] = "A";
            return View();
        }

运行结果:

GetTest1
GetTest2

然后按上文在Controller前加:[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)],再次运行,发现结果是一样的,说明ReadOnly是无效的。

其实也是,虽然是ReadOnly,但是代码中还是写了,这和ReadOnly显然是矛盾的,但是代码并不会报错,只是这个属性无效了。

后来,改成:[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]

这时再运行,就直接报错了。

最后总结了一下,只要Controller中有Session的写,无论Controller前的SessionStateBehavior是什么,都会认为Session是可写的,会进行Session锁。 所以,如果真的对Ajax并发性能要求比较高的话,就不能用Session了吧。 所以,觉得SessionStateBehavior这个属性有点鸡肋呀。本人浅见,如果有高手希望指点一二。

 

后来,我对自己的应用想到了一个不是办法的办法,把另外一个Ajax加载比较慢的,使用timeout 20ms,这个是调用一个复杂的计算加载待办数的,另一个是加载页面列表数据,显然,用户一开始最想先看到列表数据。

 

以上是关于asp中session的问题的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC动作方法使用Session在其它方法中无法取值

怎样获得asp.net中的session

asp.net 中切换页面时 为啥session会丢失

急急 急!在asp管理后台当中,设置session值,各几分钟就会丢失,怎么解决啊。 求助!

ASP.NET Core 中简单Session登录校验

asp.net 中设置 session 当天过期