如果Azure中的云服务(也许还有应用服务),如何在服务在交换中或新实例的情况下运行之前运行一些代码。
例如,在第一个用户有权访问之前将数据加载到缓存中。
答案 0 :(得分:1)
将您的应用初始化代码放在OnStart()
。
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。
使用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>