关于session单线程的问题,你们是怎么解决下载的啊
背景:
例如页面A.ASPX中有Intersoft WebUI Studio 的WEBGRID,选择数据导出,然后会弹出一个窗口,通用为A.ASPX后面不带传值。
然后就可以下载东西了。
---------分------------隔-----------------线------------------
我有一个服务器控件利用的回调,拖到B.APSX页面,有下载的回调请求,大家知道的,回调里面VIEWSTATE,COOKIE是无效的,只能用APPLICATION,或者SESSION,CACHE,也没有RESPONSE让我输出文件,因此只有用传回一段JS代码,用来打开新的窗口,地址还是B.ASPX,然后在控件的初始化等事件中查找传的参数来进行文件下载(文件为流,不是真正存在的文件).
问题就来了,就在传的参数这里了,我看到Intersoft WebUI Studio也没有用传址的方法传,而且知道的,肯定不能用APPLICATION或者CACHE这样的全局,只能用SESSION(上面说了,回调里面不能用VIEWSTATE,COOKIE),但知道的SESSION是单线程的,因此,只要我设置了SESSION值后,在新开的窗体里面再读取了SESSION,那么这两个窗体就是一个线程了,所以在新开的窗体的文件下载未完成前,前一个窗体是卡死的,泪奔啊,怎么办,怎么实现不用传地址的方法下载啊(因为传地址的方法会使文件不安全,把地址给其他人也能下载了)。
既然人家Intersoft WebUI Studio也有办法解决,各位高手有没办法啊?
页面B→ 回调JS打开新的→ 页面B
写SESSION 读SESSION 就成了两个页面一个线程了,新的页面B下载文件时旧页面就卡死
用过委托等多线程进行下载,无效,因为委托等也是在主线程下运行,因此实现委托后主线程继续执行下面的程序,也采用的RESPONSE输出,委托后的多线程也是采用RESPONSE输出,如果委托线程输出过慢就被主线程抢先,造成页面下载失败,我试过,只要页面输出31748Bytes就被主线程抢了RESPONSE,下载失败!
谢谢各位了~