0

我在 global.asax 中的 Application_Start() 中运行一个后台线程,以像 Windows 服务一样使用它,但是当我的网站中的所有会话结束时 applicaton_end 会触发

我有一个与 web 服务一起工作的短信业务,我想在我的服务器中有一个代理来检查传入的消息,比如 windows 服务

我将会话超时增加到 10 小时但是当我关闭浏览器应用程序结束时触发并且我的线程停止工作

我无法更改服务器属性

我可以禁用 application_end 以使线程继续工作吗?

由于英语写作不佳,我向你道歉

4

3 回答 3

1

您应该制作一个作为服务运行的单独程序或批处理程序来执行此操作。尽管 ASP.NET 在页面加载之间保留静态变量等,但您不应该使用它在后台运行事物。无法保证事情会继续运行。

如果您需要在服务器上发生某些事情时在用户端发生某些事情(例如收到消息(例如在 facebook 上)、有人响应请求或引发其他事件),您需要在 javascript 上实现一个轮询系统用户看到的网页使用 AJAX(查找它......这是一个非常棒的概念)定期与服务器交谈以查看是否发生了任何事情。这就是 Facebook 聊天与大多数网络邮件系统一起检查新消息的方式。服务器不与浏览器对话......浏览器询问服务器是否发生了任何事情。

下面是一个使用 AJAX 的聊天程序示例:http ://www.dynamicajax.com/fr/JSON_AJAX_Web_Chat-.html

这并不完全是您正在做的事情,但它演示了在页面加载后尝试检查某些内容并使用户的浏览器响应的概念。

于 2012-04-22T05:31:42.837 回答
0

可以使用 .NET 版本的quartz-scheduler 库(http://quartz-scheduler.org/)来根据配置(cron 表达式)定义和触发作业。

于 2012-04-23T06:54:45.527 回答
0

当网站中没有打开会话时,iis 会自动关闭网站应用程序以禁用此功能,您可以更改 iis 中的空闲时间或读取 global.asax (application_end) 函数中的网站链接以启动新会话

于 2013-04-30T04:24:13.787 回答