校园二手市场网站开发,wordpress 获取用户id,公司网站怎么做网站备案,wordpress我的世界主题【导读】不知道是否有童鞋遇到过将.NET Core部署到IIS上时#xff0c;但Hangfire无法启动#xff0c;自然而然也就导致作业无法良好运行的问题#xff0c;本文给出两个方案#xff0c;不知是否有完美解决方案#xff0c;若有#xff0c;请于留言中给出#xff0c;谢谢。… 【导读】不知道是否有童鞋遇到过将.NET Core部署到IIS上时但Hangfire无法启动自然而然也就导致作业无法良好运行的问题本文给出两个方案不知是否有完美解决方案若有请于留言中给出谢谢。Hangfire部署IIS相信有一部分童鞋在.NET Core上利用Hangfire来进行作业计划无论是一触即发还是延迟抑或是周期Hangfire都能很好的支持但是若将Hangfire应用于实际生产环境时我们会发现存在很多问题这些问题只有实践过后才能体会到各种坑但更深入的资料网上并没有只能靠经验或依托源码摸索。配置什么的就不过多废话我们实现一个很简单的Hangfire周期作业然后将一段字符串输入到文本上如下周期作业RecurringJob.AddOrUpdate(() File.WriteAllLines(Path.Combine(AppContext.BaseDirectory, hangfire-demo.txt), new[] { Recurring }),Cron.Minutely());
要将.NET Core寄宿在IIS运行除了安装必须的runtime外还需安装对应版本的host-bundle模块这里以.NET Core 3.1为例所以安装名为【dotnet-hosting-3.1.0-win】的host-bundle至于原因请自行察看官方文档紧接着我们打开IIS创建.NET Core的无托管应用程序池继而创建网站如下图所示然后我们就等啊等等到花儿都快谢了最终我们会发现过了几分钟后然鹅并没有在如下图文本中输出字符串你说气人不IIS启动Hangfire方案首先我们在web.config里打开.NET Core默认日志输出将该属性设置为ture即可如下图所示然后手动访问下网站接下来我们就可以看到日志文件请客官稍等片刻紧接着就启动了Hangfire后台服务并输出了字符串到文件中就是这样必须手动访问下网站才能在IIS上启动HangfireHangfire本就作为后台作业服务去启动业务作业现在反过来还得手动鞭策一下才能启动有意思。那么究竟是什么原因导致必须手动访问网站才能启动Hangfire呢那我们是否可以理解为网站的启动并不会使.NET Core程序启动换言之也就是不会执行startup只有第一次访问时才会执行呢那么我们是否通过什么方式使得网站启动时程序也进行了执行即执行startup呢唯一能想到的则是.NET Core应用程序池所以接下来我们尝试当我们发布程序到IIS时首先将.NET Core应用程序池停止创建完网站后再将该程序池启动如下此时我们将发现在启用了.NET Core默认文件日志输出后将会自动如上生成日志文件从而很好的启用了Hangire后台作业服务。综上所述在IIS上想要启动Hangfire作业服务要么手动访问下网站要么在网站启动后再启动.NET Core无托管应用程序池。以上纯属我个人的猜测和分析若有错误之处还请批评指正谢谢。