在Azure Web角色中自动安装应用程序初始化(SDK v1.8,Windows Server 2012)

时间:2012-11-05 17:38:39

标签: azure azure-web-roles

我看到Microsoft已将Application Initialization作为IIS 8.0的一部分发布。遗憾的是,默认情况下,Web角色中未启用它。 (我的意思是,“应用程序初始化”作为Web服务器角色的一项功能未启用。我知道Web角色有IIS 8。)

有谁知道如何从启动脚本启用此功能?我已经有很多启动脚本,但我不确定如何添加服务器角色功能。

模块本身出现在“服务器角色”下的服务器管理器中 - > “Web服务器(IIS)” - > “Web服务器” - > “应用程序开发” - > “申请初始化”。

遗憾的是,默认情况下不启用它,因为它非常有用。

感谢

克里斯

2 个答案:

答案 0 :(得分:17)

首先,您需要使用启动任务来安装该功能:

PKGMGR.EXE /iu:IIS-ApplicationInit

然后您需要在IIS中配置您的网站( startMode preloadEnabled ):

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
        using (var serverManager = new ServerManager())
        {
            var mainSite = serverManager.Sites[RoleEnvironment.CurrentRoleInstance.Id + "_Web"];
            var mainApplication = mainSite.Applications["/"];
            mainApplication["preloadEnabled"] = true;

            var mainApplicationPool = serverManager.ApplicationPools[mainApplication.ApplicationPoolName];
            mainApplicationPool["startMode"] = "AlwaysRunning";

            serverManager.CommitChanges();
        }

        base.Run();
    }

    public override bool OnStart()
    {
        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

        return base.OnStart();
    }
}

I wrote a blog post about this您可以找到a sample application on GitHub

答案 1 :(得分:0)

Web角色绝对安装了IIS 8.0。如果您将Web角色更改为OSVersion = 3,它会将您的应用程序部署到带有IIS 8.0的Windows Server 2012映像。

如果您的意思是VM(Azure IaaS)?我要做的是从Windows Server 2012,远程桌面开始,根据需要安装核心服务器,sysprep它,捕获图像。这样您就可以在Azure图像库中重复使用它。然后,您可以在已经设置/安装IIS 8.0的情况下从此基本映像中启动许多VM。