【问题标题】:Trying to make Web Method Asynchronous尝试使 Web 方法异步
【发布时间】:2012-07-04 17:24:33
【问题描述】:

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

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

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

我可以吗?

【问题讨论】:

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


    【解决方案1】:

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

    制作会话的基本技巧:

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

    亲戚:

    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 server 或其他介质上有 session 并没有改变工作方式,只是保存数据的地方。

    【讨论】:

    • @TWickz 我已经完成了所有这些:) 并不难,只有几天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    相关资源
    最近更新 更多