繁体   English   中英

如何将网站配置为使用TFS版本管理自动启动?

[英]How can I configure a website to start automatically using TFS release management?

[ 我发布这篇文章是为了记录经过数小时痛苦的反复试验后我实际发现的内容。 ]

我有一个网站,我需要“始终运行” (因为在这种情况下,它有一个Hangfire工作,负责每5分钟启动一个计划任务), 默认情况下,网站只在第一个请求是启动时启动收到了

那么, 我该如何确保网站自动启动 而且,我如何通过TFS版本管理工具进行配置?

[ 这个答案并非特定于Hangfire,但请参阅Hangfire文档对此问题的讨论,了解它如何影响Hangfire的详细信息,但请注意,推荐的解决方案涉及一些问题,并且比下面的解决方案复杂得多。 另请参阅有关Hangfire支持论坛的单独且相当全面的讨论,该论坛提供了几种替代解决方案。 ]

在IIS中,每个网站都与应用程序池(应用程序池)相关联。 您可以将应用程序池配置为通过IIS管理器自动启动, AlwaysRunning是在应用程序池的“高级设置”中将“启动模式”更改为AlwaysRunning

在此输入图像描述

但是,启动App Pool不会启动与其关联的网站(或网站)。 在收到第一个请求之前,网站不会加载。

在IIS8(或带有扩展名的IIS7.5)中,添加了一个新设置 ,允许我们解决此问题。 通过在网站的“高级设置”中将“预加载已启用”设置为True ,您可以确保在应用程序池启动后立即向网站发送请求:

在此输入图像描述

这些设置的组合可确保网站在IIS启动时自动启动,并在应用程序池回收后立即启动等。

但是, 如何将这些设置作为TFS版本管道的一部分自动应用 ,而不是必须记住手动设置它们?

在您的发布定义中,您可能有一个“IIS Web App Management”任务,它设置了App Pool和网站。 在此步骤的配置面板中,应该有一个“高级”框,其中包含“其他AppCmd.exe命令”输入字段。 您可以使用AppCmd应用上述设置。

AppCmd是我在代码 - 高尔夫比赛之外看到的最令人困惑的命令行语法,但这里的咒语对我有用:

set config /section:applicationPools -[name='myAppPoolName'].startMode:AlwaysRunning

set app "mySiteName/" /preloadEnabled:true

请注意,如果您为应用程序池名称和网站名称定义了配置变量,则可以使用这些变量而不是对名称进行硬编码,例如:

set config /section:applicationPools -[name='$(appPoolName)'].startMode:AlwaysRunning

我希望这有助于某人......感谢您的倾听:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM