我目前正在进行的项目涉及使用会话变量的 MS SQL Server 和 ASP.net Web 服务。显然,这会导致客户端的调用以顺序方式执行。我想确保这些方法异步执行。
经过一些研究后,在我看来,最好的方法是使用跟踪会话的表(例如使用 guid )和每个会话的单独表将会话状态持久保存在数据库中。
在直接深入探讨这一点之前,我需要知道如果我配置 SQL Server 来存储会话,是否可以获得与 Web 服务相同的异步操作感觉。
Can I ?
抱歉地说,但是异步执行代码和使用会话变量的唯一方法是创建完全自定义的会话解决方案 - 我的意思是完全自定义并完全禁用 asp.net 会话。
进行会议的基本技巧:
- 您有一个与用户数据相关的 cookie
- 数据位于数据库的一张表中。
- 您为每个会话在该表上创建自定义字段,并避免使用 Dictionary 来保留它们
- 你与脏读,最后写入获胜
- 您每次只读取和写入需要的会话变量(不是全部一起)
- 每行都有一个超时日期,并使用像 AS 一样的 SQL 调度程序来删除旧会话。
- 加载会话于
OnPreInit
,仅保存有变化的内容OnUnload
- 通过完全禁用会话,您需要使用锁定
Mutex
现在的代码工作正常,因为会话在没有注意到的情况下进行同步,但是如果没有会话锁定,则可能会执行两次,就像新插入到数据库调用一样。
相对的:
处理共享同一会话的另一个 Web 应用程序时 Web 应用程序被阻止
哪些性能计数器可用于识别 ASP.NET 瓶颈?
完全替换 ASP.Net 的会话
回答这个问题if I configure SQL Server to store the session ?
会话仍处于锁定状态并阻止其余请求。如果您在 SQL Server 或其他介质上有会话,则不会更改工作方式,只会更改保存数据的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)