Rya*_*yan 2 dictionary session-variables asp-classic
我有一个经典的ASP网站,我在用户登录时创建一个字典,然后将该字典存储在会话变量中,如此...
dim objDict
set objDict = server.createobject("scripting.dictionary")
' processing here to fill dictionary
set session("user") = objDict
Run Code Online (Sandbox Code Playgroud)
这一切工作正常和花花公子,但当我导航到另一个页面并尝试从存储的字典中访问这样的值...
session("user").item("id")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误...
error '80020009'
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我,如果我错误地访问存储的字典?将字典对象存储在会话变量中是一件坏事/坏事吗?
谢谢
您收到的错误是远程过程调用错误.我无法解释为什么你得到这个错误或为什么提取到局部变量修复它.
但是我可以说它真的很糟糕.在Session对象中存储此类对象时,会在执行脚本的当前线程与会话之间创建关联.因此,此会话的所有后续请求现在必须仅由此特定线程处理.如果该线程正忙于处理某个elses请求,则即使有大量可用的工作线程,也会将会话请求排队.因此,在Session中存储对象会严重损害应用程序的可伸缩性.
我还质疑将词典存储在已经是字典的东西中的智慧?
为什么不只是用户: -
Dim userID : userID = Session("user_id")
Run Code Online (Sandbox Code Playgroud)
通常存储在"用户"字典中的任何内容,例如"id",只会有前缀"user_"并直接存储在Session中?
| 归档时间: |
|
| 查看次数: |
3289 次 |
| 最近记录: |