C# 如何在Azure中编写CloudService实例的脚本预热?
我有一个CloudService经典应用程序,它有两个实例,我称之为bob_app_001和bob_app_002,每个BobApp中有5个实例 这个应用程序是一个c#Api,它有一个端点,我们用来监视~/ping 我目前的部署方式是从Traffic Manager中取出一项服务,让流量流失,然后VIP将登台切换到生产插槽,然后重新添加到Traffic Manager。这里的问题是,随着服务自身的旋转,最初的几个请求总是很慢。为了避免这种情况,我在将池放回旋转状态之前,先点击ping端点,旋转所有与web相关的内容C# 如何在Azure中编写CloudService实例的脚本预热?,c#,azure,application-warmup,C#,Azure,Application Warmup,我有一个CloudService经典应用程序,它有两个实例,我称之为bob_app_001和bob_app_002,每个BobApp中有5个实例 这个应用程序是一个c#Api,它有一个端点,我们用来监视~/ping 我目前的部署方式是从Traffic Manager中取出一项服务,让流量流失,然后VIP将登台切换到生产插槽,然后重新添加到Traffic Manager。这里的问题是,随着服务自身的旋转,最初的几个请求总是很慢。为了避免这种情况,我在将池放回旋转状态之前,先点击ping端点,旋转所
如何编写脚本从bob_app_001获取所有应用程序的URL,然后在ping端点上通过调用Invoke WebRequest循环获取每个应用程序的URL,以预热服务,然后在VIP交换后将其放回TrafficManager。
从bob_app_001获取所有应用程序的URL
这将是一个棘手的部分,尤其是在没有到达应用程序内部并以某种方式公开URL的情况下(取决于路由的设置方式)
我建议改用应用程序初始化模块
要启用该模块,您需要在web.config中创建一个applicationInitialization
部分,在该部分中定义要点击的url以开始初始化任务
<system.webServer>
<applicationInitialization>
<add initializationPage="/app/init" />
</applicationInitialization>
<system.webServer>
我在本例中没有提到任何安全性概念,但最好限制从应用程序内部访问/app/init
(并且只运行一次)
设置完成后,“app/init”url下的代码完成后,部署插槽之间的交换操作将完成。是云服务还是应用服务的解决方案?
public class InitController : ApiController
{
[Route("/app/init")]
public IHttpActionResult Index()
{
//do your initialisation / warmup here
return Ok();
}
}