这篇文章告诉你什么时候该做什么。NET Core部署IIS,无法启动Hangfire。内容简洁易懂,一定会让你大放异彩。希望通过这篇文章的详细介绍,你能有所收获。
不知道是否有童鞋遇到过将.NET Core部署到IIS上时,但Hangfire无法启动,自然而然也就导致作业无法良好运行的问题,本文给出两个方案。
Hangfire部署IIS
我相信有些童鞋是用Hangfire来规划工作的。NET Core,无论是迫在眉睫的、延迟的还是周期性的Hangfire,都可以很好的支持。但是如果把Hangfire应用到实际的生产环境中,我们会发现有很多问题,只有经过实践才能实现,但是网上没有更深入的信息,只能靠经验或者依靠源代码去探索。
配置任何东西都是一派胡言。我们实现了一个非常简单的Hangfire周期性作业,然后在文本中输入一个字符串,比如下面的周期性作业:
递归作业。AddOrUpdate(
()=文件。写所有行(路径。组合(AppContext。BaseDirectory,' hangfire-demo.txt '),new[]{ ' recursive ' }),
克朗。minute());
招待。NET Core在IIS中,除了安装必要的运行时,还需要安装相应版本的主机捆绑模块。拿着。NET Core 3.1为例,所以安装名为【dotnet-hosting-3.1.0-win】的主机捆绑包。原因请查看官方文件。
然后我们打开IIS,创建的非托管应用程序池。NET Core,然后创建网站,如下图所示。
然后我们会等啊等,直到花都快枯萎了。最后,我们会发现几分钟后,鹅没有输出下面文本中的字符串。你觉得这很气人吗?
IIS启动Hangfire方案
首先,我们打开的默认日志输出。NET Core,并将该属性设置为true,如下图所示。
然后手动访问网站,然后我们可以看到日志文件。
客官等了一会儿,然后启动了Hangfire后台服务,并将字符串输出到文件中。
也就是说,您必须手动访问网站才能在IIS上启动Hangfire。Hangfire最初是作为后台作业服务来启动业务作业的,但现在必须手动催促才能启动。有意思。
那么为什么要手动访问网站才能启动Hangfire呢?
我们能理解网站的启动不会启动。NET Core程序,换句话说,启动不会执行,只会在网站第一次访问时执行?
那么,当网站启动时,我们用什么方式让程序执行(即执行启动)?
唯一能想到的是。NET Core应用程序池,所以接下来,我们尝试停止。NET Core应用程序池当我们将程序发布到IIS,然后在网站创建后启动它,如下所示:
这时,我们会发现默认文件日志输出后的。NET Core启用后,日志文件会自动生成如上,从而很好地启用了Hangire后台作业服务。
总而言之,如果您想在IIS上启动Hangfire作业服务,您应该手动访问网站或启动。网站启动后的. NET Core非托管应用池。
以上内容是如果怎么办。NET Core部署IIS,无法启动Hangfire。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识,请关注行业信息渠道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/102831.html