今天被一个问题困扰,ASP.NET代码一直无法获取cookie值,代码就是大家时常在写的获取cookie代码,不过是写在一般处理程序页面。
包括:
1、context.Request.Cookies["userInfo"]["UserName"]
2、HttpCookie cookie = HttpContext.Current.Request.Cookies["userInfo"];
等等类似的写法。
但始终出错无法找到原因,也百度了好久,比如要指明cookie的path属性的值之类的方法,也都不顶用。
后来忽然想到,我的业务用了多线程,而获取cookie的代码是写在子线程里的,是不是这个问题引起的。
通过调试后确定问题果然在此。
比如:
CLSUpdateAMZPri cls = new CLSUpdateAMZPri();
//新开线程进行事务处理
Thread thd = new Thread(new ThreadStart(cls.Main));
thd.Start();
如果将获取cookie代码写在Main()方法中,就会出现获取不到的错误。因为子线程无法共享主线程的cookie。
如何解决这种冲突还不清楚,变通的办法是将cookie值作为类CLSUpdateAMZPri的属性传递进去。
经验分享。