ASP.NET MVC即使没有人访问网站,我也可以让一个循环始终运行吗

本文关键字:一个 循环 运行 也可以 MVC NET 没有人 访问 网站 ASP | 更新日期: 2023-09-27 18:10:04

ASP.NET MVC即使没有人访问网站,我也能让循环始终运行吗?

即使没有人访问,也可以在网站上循环运行吗。我想做一个循环,在列表中检查高于30分钟的值,如果是这样的话,它会从列表中删除用户。但是我应该把这个循环放在哪里呢?

我制作了自己的登录系统,并使用了自己的DLL。现在我想添加会话,这样会话就会过期。我想做一个代理,检查绑定到会话ID的DateTimes列表。如果DateTime超过30分钟,则会话ID将被删除,用户必须重新登录。

ASP.NET MVC即使没有人访问网站,我也可以让一个循环始终运行吗

有没有可能在网站上循环运行,即使没有人访问?

是的,你可以。只需创建一个无休止的循环。或者创建一个计时器。小心由于IIS的线程池限制而导致的线程不足:

IIS线程池的最大线程数为256。此线程游泳池的设计方式不适合长时间跑步任务很好。IIS团队的建议是切换到如果你要做大量的工作,比如由在上以集成模式运行时的ASP.NET ISAPI和/或ASP.NETIIS 7。否则,您将阻塞IIS线程并阻止IIS从HTTP.sys中获取完成。因此,ASP.NET始终向IIS返回挂起状态,并调用QueueUserWorkItem将请求发布到CLR线程池。在v2.0、3.5和4.0中,ASP.NET初始化CLR线程池,每个处理器有100个线程(这是默认值,这是可配置的(。因此,在双核服务器上,池中最多将有200个线程。

看起来您正在实现的是一个状态服务器:

State Service可以与Web在同一台计算机上运行应用程序或专用服务器机器上。使用国家服务当您想要进程外会话状态管理时,选项非常有用但不希望必须在托管计算机上安装SQL Server州。

事实上,ASP.NET有一个单独的进程(不同于工作进程(来运行这个循环:

然后,会话状态被容纳在一个不同的运行进程中来自ASP.NET工作进程。StateServer模式取决于ASP.NET State Service将启动并运行(此服务已安装安装.NET运行时(。默认情况下,服务侦听通过端口42424,尽管您可以根据每台机器更改通过更改HKLM''System''CurrentControlSet''Services''aspnet_state''Parameters''Port注册表中的键。