Azure应用程序或云服务,在加载balncer之前运行一些代码

时间:2016-10-09 12:21:20

标签: azure azure-cloud-services azure-web-app-service

如果Azure中的云服务(也许还有应用服务),如何在服务在交换中或新实例的情况下运行之前运行一些代码。

例如,在第一个用户有权访问之前将数据加载到缓存中。

1 个答案:

答案 0 :(得分:1)

具有角色的云服务

将您的应用初始化代码放在OnStart()

来自https://msdn.microsoft.com/library/azure/microsoft.windowsazure.serviceruntime.roleentrypoint.onstart.aspx

public class WorkerRole : RoleEntryPoint
{
   public override bool OnStart()
   { 
      try
      {
         // Add initialization code here
      } 
      catch (Exception e)
      {
         Trace.WriteLine("Exception during OnStart: " + e.ToString());
         // Take other action as needed.
      }

      return base.OnStart();
   }
}
  

OnStart方法返回之前,角色实例的状态设置为Busy,并且实例不能通过负载均衡器使用。

     

如果OnStart方法返回false,则立即停止角色实例。如果方法返回true,则Windows Azure通过调用Run方法启动该角色。通常,您应该避免从OnStart方法返回false。

App Service

使用Application Initialization IIS模块。这里详细描述了这种机制 - http://ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/

的web.config

<system.webServer>  
  <applicationInitialization >  
    <add initializationPage="/warmup-cache.php" hostName="site.azurewebsites.net"/>  
  </applicationInitialization>  
<system.webServer>