试图使Web方法异步

时间:2012-07-04 08:21:37

标签: asp.net web-services session-state webmethod

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

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

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

可以吗?

1 个答案:

答案 0 :(得分:1)

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

进行会话的基本提示:

  1. 您有一个与用户数据相关联的Cookie
  2. 数据位于数据库的一个表格中。
  3. 您在该表上为每个会话制作自定义字段,并避免使用Dictionary<>保持他们
  4. 您使用脏读,最后写赢
  5. 每次只读取和写入您需要的会话变​​量(不是全部)
  6. 每一行都有一个超时日期,并使用类似MS,SQL上的sheduler来删除旧会话。
  7. OnPreInit上加载会话,仅保存OnUnload
  8. 上的更改内容
  9. 通过完全禁用会话,您需要使用现在正常工作的Mutex代码锁定,因为会话是同步而不注意它,但是没有会话锁定可能会执行两次,如新插入到数据库电话。
  10. 相对

    Web app blocked while processing another web app on sharing same session
    What perfmon counters are useful for identifying ASP.NET bottlenecks?
    Replacing ASP.Net's session entirely

    回答问题if I configure SQL Server to store the session ?会话仍然是锁定并阻止其余请求。如果你在SQL服务器或其他媒体上的会话没有改变工作方式,只有保存数据的位置。