3

我目前从事的项目涉及使用会话变量的 MS SQL Server 和 ASP.net Web 服务。显然,这会导致客户端的调用以顺序方式执行。我想确保这些方法异步执行。

在做了一些研究之后,在我看来,最好的方法是使用一个跟踪会话的表(使用 guid 说)和为每个会话单独的表将会话状态保存在数据库中。

在我直接深入研究之前,我需要知道如果我配置 SQL Server 来存储会话,我是否可以获得与 Web 服务异步操作相同的感觉。

我可以吗 ?

4

1 回答 1

1

很抱歉,但异步执行代码和使用会话变量的唯一方法是制作完全自定义的会话解决方案 - 我的意思是完全自定义并完全禁用 asp.net 会话。

进行会话的基本提示:

  1. 您有一个与用户数据相关的 cookie
  2. 数据位于数据库的一张表上。
  3. 您为每个会话在该表上创建自定义字段并避免使用 Dictionary<> 来保留它们
  4. 您使用脏读,最后写入获胜
  5. 您每次只读取和写入您需要的会话变​​量(不是全部一起)
  6. 每行都有一个超时日期,并像 MS 一样使用 SQL 上的调度程序来删除旧会话。
  7. 加载会话OnPreInit,仅保存已更改的内容OnUnload
  8. 通过完全禁用会话,您需要使用Mutex现在可以正常工作的代码进行锁定,因为会话会在没有通知的情况下进行同步,但是没有会话锁定可能会执行两次,例如新插入数据库调用。

相对的:

在共享同一会话时处理另一个 Web 应用程序时 Web 应用程序被阻止
哪些性能计数器可用于识别 ASP.NET 瓶颈?
完全替换 ASP.Net 的会话

为了回答这个问题if I configure SQL Server to store the session ? ,会话仍然被锁定并阻止休息请求。如果您在 SQL Server 或其他介质上进行会话,则不会更改工作方式,仅更改保存数据的位置。

于 2012-07-04T08:29:30.370 回答