asp.net - 尝试使 Web 方法异步

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

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

经过一些研究后,在我看来,最好的方法是使用跟踪 session 的表(例如使用 guid )和每个 session 的单独表将 session 状态保留在数据库中。

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

可以吗?

最佳答案

很遗憾地说,异步执行代码和使用 session 变量的唯一方法是创建完全自定义的 session 解决方案 - 我的意思是完全自定义并完全禁用 ASP.NET session 。

进行 session 的基本技巧:

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

亲戚:

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

回答这个问题如果我配置 SQL Server 来存储 session ? session 仍然处于锁定状态并阻止其余请求。如果您在 SQL Server 或其他介质上有 session ,则不会改变工作方式,只会改变保存数据的位置。

关于asp.net - 尝试使 Web 方法异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11325150/

相关文章:

asp.net - 带有控制台应用程序的 Windows 调度程序 API 与带有 asp.net mvc 的 .net 调度程序工具,用于在我的 asp.net MVC 中执行长时间运行的进程

mysql更新更新表中的所有用户行

c# - 上传照片并将其作为 json 对象发送

c# - .NET 4.5 中的 WCF 不安全响应

asp.net - 有没有人尝试过为 Amazon SimpleDB 构建 ASP.NET session 状态提供程序?

cookies - 我们还需要担心用户关闭 cookie 吗?

c# - 如何在 C# 中动态更改 td 的 colspan?

c# - 如何构建此交易?

java - 从 SOAPMessageContext 获取方法参数

asp.net-mvc-3 - Mvc3 RouteConstraint - session 为空