如何在Web Setup Project中创建新的应用程序池?

时间:2009-03-18 15:09:57

标签: c# web-services iis iis-6 windows-installer

我需要部署我的网络服务。它需要使用自己的凭据在IIS中的单独应用程序池中运行。

是否可以通过在VS 2008中使用Web Setup Project来实现此目的?

默认情况下,我似乎只能选择现有的应用程序池。

2 个答案:

答案 0 :(得分:12)

查看此帖子http://forums.iis.net/t/1061734.aspx,它会对Microsoft.Web.Administration dll有一些粗略的了解。

我没有研究过整个概念,但我想到了如何创建新池以及如何附加新的网站/虚拟目录。

创建应用程序池

Microsoft.Web.Administration.ServerManager manager = new Microsoft.Web.Administration.ServerManager();
manager.ApplicationPools.Add("NewApplicationPool");
manager.CommitChanges();

使用现有虚拟目录附加

Microsoft.Web.Administration.ServerManager manager = new Microsoft.Web.Administration.ServerManager();
Site defaultSite = manager.Sites["Default Web Site"];

// defaultSite.Applications will give you the list of 'this' web site reference and all
// virtual directories inside it -- 0 index is web site itself.

Microsoft.Web.Administration.Application oVDir = defaultSite.Applications["/myApp"];            
oVDir.ApplicationPoolName = "NewApplicationPool";
manager.CommitChanges();

这样,您可以使用自定义操作将应用程序池分配给新网站,从而覆盖安装程序类的提交方法。

如果仍然发现自己在挣扎,请告诉我,我会尝试发送代码。

此致 Faiyaz faiyazkhan@hotmail.com

答案 1 :(得分:8)

之前我一直在这条路上,不幸的是,您需要手动创建应用程序池或编写自定义操作来为您管理。

在下面的评论中继续Grzenio的问题:

“你能否给我一个提示,从哪里开始寻找代码/助手类?你是否将项目保留为Web安装项目,或者只使用标准的应用程序安装项目?” < / p>

我在包含安装项目的解决方案中添加了一个名为InstallHelper的新项目。在那个项目中,我创建了一个名为InstallActions的类,它来自:

System.Configuration.Install.Installer (MSDN)

您可以在Installer基类上覆盖四种方法,以允许您根据安装程序运行时是处于安装,提交,卸载还是回滚阶段来指定自定义操作。

我还在安装项目用户界面中添加了许多文本框对话框。从这些对话中捕获的输入和状态将通过字典传递到您的自定义安装操作。即:

using System.Collections.Specialized;
using System.ComponentModel;
using System.Configuration.Install;
using System.Windows.Forms;

namespace InstallHelper
{
  [RunInstaller(true)]
  public partial class PostInstallActions : Installer
  {   
    public override void Install(IDictionary state)
    {
      base.Install(state);
      // Do my custom install actions
    }

    public override void Commit(IDictionary state)
    {
      base.Commit(state);
      // Do my custom commit actions
    }

    public override void Uninstall(IDictionary state)
    {
      base.Uninstall(state);
      // Do my custom uninstall actions
    }
    public override void Rollback(IDictionary state)
    {
      base.Uninstall(state);
      // Do my custom rollback actions
    }
  }
}

要将自定义操作项目添加到安装项目,请打开自定义操作查看器/编辑器并指定InstallHelper项目的输出。

这是基础知识,应该让你开始。 Web Setup Project还支持自定义操作和其他用户输入对话框,因此您可能希望重新使用现有项目,以及自定义操作。