我为我们的客户构建了一个Windows服务,它从数据库中收集所有已更改/新行,将它们转换为CSV,并且每晚都将FTP上传到某个地方。现在事实证明他们没有安装或运行Windows服务的权限(它是一个仅限Web路径的托管解决方案)。
我认为修改Windows服务代码以在ASP.Net进程内运行并从Global.asax实例化是很容易的(我以前做过这个,在MVC项目中托管WCF服务) )。我们使用Web表单在ASP.Net 4.0上运行,此任务每晚午夜(或其他配置时间)运行Quartz和OpenPG。
我的老板担心在没有人到达网站的长时间内托管过程正在睡觉或卸载。我很确定这不会发生,但我绝对不确定。
这是否可行,因为我认为它会,或者以这种方式实施它会有一些问题吗?
谢谢!
编辑:我知道你“可以”(创建一个对象并调用一个方法,该方法不会阻止启动计时器或后台线程的Application_Start的执行,并在后台运行代码)但这是一个好主意并且ASP.Net托管进程会睡眠/杀死正在运行的线程吗?如果是这样,我可以生成一个新线程(创建我自己的线程,或者从池中消耗一个线程)并让它无限运行而不被杀死?
答案 0 :(得分:2)
默认情况下,IIS将关闭空闲进程。您可以更改此设置,但仍然面临无法保证Web进程正在运行的风险。工作进程设置应该在某种程度上保持运行。
答案 1 :(得分:1)
使用Window的任务计划程序....这是它的完美示例。您可以直接调用程序集,也可以使用它来调用网站中的WCF端点。