Iis 部署后自动启动Azure webrole

Iis 部署后自动启动Azure webrole,iis,deployment,azure,azure-web-roles,Iis,Deployment,Azure,Azure Web Roles,A拥有一个azure webrole,其中包含一个测试页面和一个服务。 发布角色后,它不会自动启动,仅在首次使用时启动。 因此,如果角色由于某种原因被关闭,那么之后的第一次使用将非常缓慢 有没有办法让webroles在部署后(第一次或迁移后)立即自动启动?请查看。确保为webrole设置了osFamily=“2”,以便它使用Windows 2008 R2操作系统 编辑:由于技术原因,我们仍然停留在osFamily=“1”上,因此我们还无法实现自动启动功能。但是,以下是设置自动启动所需的步骤: 创

A拥有一个azure webrole,其中包含一个测试页面和一个服务。 发布角色后,它不会自动启动,仅在首次使用时启动。 因此,如果角色由于某种原因被关闭,那么之后的第一次使用将非常缓慢

有没有办法让webroles在部署后(第一次或迁移后)立即自动启动?

请查看。确保为webrole设置了osFamily=“2”,以便它使用Windows 2008 R2操作系统

编辑:由于技术原因,我们仍然停留在osFamily=“1”上,因此我们还无法实现自动启动功能。但是,以下是设置自动启动所需的步骤:

  • 创建自己的自动启动提供程序,以实现。以前有一个名为的默认提供程序,但现在无法再下载。您可以使用.Net Reflector查看Microsoft.ApplicationServer.Hosting.AutoStart.ApplicationServerAutoStartProvider.dll的内容,作为示例实现。此dll包含在Windows Server(非Azure)AppFabric中

  • 下一步是在applicationHost.config中指定正确的设置。可以在RoleEntryPoint类中输入所列代码的一些变体,以便在Azure角色启动时调用它


  • 如果您成功创建了自己的自动启动提供商,请告知社区。此时,关于在internet上实现的信息并不多。

    角色通常每月重新启动一次,以维护来宾操作系统或底层主机操作系统。您更可能看到的是由于不活动导致的AppPool超时,这将显示相同类型的初始命中延迟。默认超时为20分钟。您可以通过提升的启动脚本更改超时,如下所示:

    %windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00
    

    我也在中讨论了这一点。

    +1忘记了设置应用程序池超时,即使我们在应用程序中禁用了超时:PI知道AppPool超时,并且它被禁用(与您提到的脚本相同)。但有时它仍然会关闭。每个异常都会被处理,所以不会是问题。可能是维护,这就是为什么我想在重新部署服务后立即重新启动它。@Atesz-我的答案和David Makogon的答案相结合,应该能满足您的需要。关于osFamily,这一点很好,因为默认值为“1”(Windows 2008 SP2)。正如我所见,您必须在主机上执行此魔法,或者我遗漏了什么?如果我的应用被迁移到一台新机器上怎么办?我必须再做一次吗?你不能通过Azure来完成吗(ServiceDefinition有一个启动标签,我在这里启动David提到的sricpt)?我有点困惑。目前这是一个低优先级问题,因为软件处于原型阶段。一旦我需要实现它,我会让您知道结果。下面的Stackoverflow答案显示了如何在IIS 8(Windows Server 2012)中使用应用程序初始化功能实现此功能: