Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Azure中编写CloudService实例的脚本预热?_C#_Azure_Application Warmup - Fatal编程技术网

C# 如何在Azure中编写CloudService实例的脚本预热?

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端点,旋转所

我有一个CloudService经典应用程序,它有两个实例,我称之为bob_app_001和bob_app_002,每个BobApp中有5个实例

这个应用程序是一个c#Api,它有一个端点,我们用来监视~/ping

我目前的部署方式是从Traffic Manager中取出一项服务,让流量流失,然后VIP将登台切换到生产插槽,然后重新添加到Traffic Manager。这里的问题是,随着服务自身的旋转,最初的几个请求总是很慢。为了避免这种情况,我在将池放回旋转状态之前,先点击ping端点,旋转所有与web相关的内容


如何编写脚本从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();
    }
}