加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在IIS / ASP.Net中创建长期存在的对象?

发布时间:2020-12-16 03:15:26 所属栏目:asp.Net 来源:网络整理
导读:我目前正在使用SignalR in和ASP.Net MVC 4 appliation.我正在使用来自RabbitMQ的消息,实质上需要在新消息到达队列时通过SignalR进行广播.问题是在正常使用情况下,没有一个长寿命对象可以在IIS中存在的地方.我每秒收到大约1000封邮件,因此通过从外部队列监控
我目前正在使用SignalR in和ASP.Net MVC 4 appliation.我正在使用来自RabbitMQ的消息,实质上需要在新消息到达队列时通过SignalR进行广播.问题是在正常使用情况下,没有一个长寿命对象可以在IIS中存在的地方.我每秒收到大约1000封邮件,因此通过从外部队列监控服务/应用程序发出请求将邮件推送到IIS的标准方法几乎会杀死我的IIS.

我有一个在后台线程上创建单例实例的一般想法.不确定在iis中执行此操作的最佳方法是什么,如果应用程序死亡,则希望自动重新创建单例.

解决方法

你是否认为你会在后台线程中有一些东西会经常检查邮件?

我过去曾使用quartz.net来创建预定的工作.它们设置起来相当简单.你基本上可以说,从y时开始每隔x个间隔执行一次这个工作.无论您使用何种解决方案,您都可能需要添加错误处理.我认为你的石英作业会继续尝试执行每个x间隔,即使它抛出一个异常,但你需要确保清除掉导致异常的因素.否则每次运行都会失败. I.E.就好像你的信息有问题,每次尝试播放时都会出错.

注意您的应用程序的IdleTimeout.如果IIS让您的Web应用程序处于睡眠状态,那么您的后台工作者/石英作业中的单例也会进入睡眠状态.如果将IdleTimeout设置为0,则应用程序将永远不会睡眠.

如果您在Global.asax.cs Application_Start()中初始化您的工作/工作人员,您的工作将始终在您的Web应用程序启动时启动.

首次部署应用程序或更新应用程序或重新启动应用程序时,您需要确保应用程序正在运行.不确定IIS中是否有此设置.但通常您的应用程序在发出请求之前不会启动.祝好运.如果您找到解决方案,请告诉我.

如果您因某些其他原因导致应用崩溃,那么同样的交易.您需要一些东西来重新启动您的网络应用程序.

希望有所帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读