7

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

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

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

遗憾的是,默认情况下未启用此功能,因为它将非常有用。

谢谢

克里斯

4

2 回答 2

19

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

PKGMGR.EXE /iu:IIS-ApplicationInit

然后您需要在 IIS 中配置您的站点(startModepreloadEnabled):

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();
    }
}

我写了一篇关于这个的博客文章,你可以在 GitHub 上找到一个示例应用程序

于 2012-11-06T00:20:48.183 回答
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。

于 2012-11-05T17:59:04.843 回答