tho*_* h. 6 browser asp.net session
我的Web应用程序的用户可能打开了多个浏览器窗口(或选项卡)并指向同一页面.我们使用基于cookie的会话ID,用户通常在两个浏览器/标签中的相同会话ID内工作.我希望能够唯一地识别请求ASP.NET页面的浏览器窗口(和选项卡)(为了确保会话中存储的数据不会混淆).
(例如,如果浏览器生成并发送带有http请求的窗口/ tab-id,我会很高兴,因为它发布了HTTP_USER_AGENT)
有任何想法吗?
- 托马斯
如果我要实现这样的东西,我可能会从 a 开始Dictionary<Type, List<Guid>>
并将其存储在用户会话中。我也可能会将其设为委托字典的自定义类型,并具有类似于以下工作的工厂方法
public Guid GeneratePageIdentifier(Page thepage)
{
var guid = Guid.New();
if(_dictionary[thepage.GetType()] == null)
_dictionary[thepage.GetType()] = new List<Guid> { guid };
else
((List<Guid>)_dictionary[thepage.GetType()]).Add(guid);
return guid;
}
Run Code Online (Sandbox Code Playgroud)
然后将从该方法返回的 guid 嵌入到页面的 VIewState 上。在执行验证页面所需操作的页面方法上,您将能够验证 guid 在集合中执行某些操作。您可能还想实现一个带有 guid 属性的自定义类型,以封装更多关于为什么要这样做或需要什么才能使其有意义的信息。
归档时间: |
|
查看次数: |
2717 次 |
最近记录: |