我如何 运行 在 ASP.Net 服务器上执行连续任务?

How would I run a continuous task on an ASP.Net Server?

我已经尝试对此进行研究,但没有发现很多听起来与我需要实施的东西相似的东西。简而言之,我们将成为 运行 一个服务器上的 ASP 网站,供客户端访问。理想情况下,我们有一个函数,我们希望在用户会话开始时初始化,并在会话结束时停止。当会话发生时,此函数通过套接字通信发送和接收消息,这意味着我们需要从页面访问此 class 的 send/receive 函数以移动信息。解决此问题的最佳方法是什么?

查看 SignalR。这可能就是你想要的。它的 "hubs" 实际上是您正在寻找的在会话启动时加速并在用户消失时减速的东西。它有一个客户端 JS 库,可以自动选择可用的最佳连接方法(例如,websockets > server-sent-events > long-polling),它允许您从客户端向服务器发送消息,以及从服务器到客户端。

http://www.asp.net/signalr

我过去尝试过的另一种选择是 XSockets:

https://xsockets.net/

它在很多方面类似于 SignalR,但它不是免费的。

根据您的描述很难判断,您是否希望通过套接字与客户端浏览器通信?或者您是否正在尝试通过套接字与其他服务通信?

Web 应用程序不适合确定性类型的操作。 Web 服务器很难知道客户端是否真的关闭了浏览器。在大多数情况下,会话会在一段时间不活动(大多数情况下超过 20 分钟)后超时。因此,您无法可靠地知道用户会话何时实际结束。

最重要的是,在某些极端情况下 Session_End 不会触发。例如,如果应用程序池回收,则不会触发 Session_End 事件。这可能不是问题,因为如果应用程序池回收您的其他连接也会回收,但这仍然是一个需要牢记的问题。

最后,Web 应用程序不应该太长 运行。