如何在IIS / ASP.Net中创建长期存在的对象?
我目前正在使用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中是否有此设置.但通常您的应用程序在发出请求之前不会启动.祝好运.如果您找到解决方案,请告诉我. 如果您因某些其他原因导致应用崩溃,那么同样的交易.您需要一些东西来重新启动您的网络应用程序. 希望有所帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在捕获httpwebrequest超时后关闭底层连接
- asp.net-core – 用于ASP.NET 5的Web服务器,无需调试活动即
- 新的ASP.NET Web应用程序:有一个Login按钮可以执行某些操作
- asp.net(c#)动态修改webservice的地址和端口(动态修改配置
- asp.net – 为什么不调用我的SelectCountMethod?
- asp.net+js 实现无刷新上传解析csv文件的代码
- asp.net-mvc – ASP.NET MVC 3从同一表单保存和编辑
- ASP.net – 多个上传与jQuery多文件上传插件
- asp.net-mvc – asp.net mvc HttpPostedFileBase获取文件扩
- asp.net – 会话超时在IIS 7中如何工作?
- asp.net – 使用AD的MVC3授权
- 如何在ASP.Net Web API中为特定控制器启用Window
- asp.net – 如何在gridview中只显示日期而不是da
- asp.net-mvc-4 – 在VS2012中运行代码分析时出错
- asp.net-mvc-3 – ASP.NET控制器名称与文件夹名称
- “超频”处理ASP.NET应用的技术
- asp.net-mvc – IIS Express会自动禁用我的项目的
- asp.net-core-mvc – 在EF7中加载引用
- 展望asp.net core Blazor项目c#编译为原生WebAss
- asp.net-mvc – SignalR持久连接的超时是多少?