C# 如何在Web安装项目中创建新的应用程序池?

C# 如何在Web安装项目中创建新的应用程序池?,c#,web-services,iis,iis-6,windows-installer,C#,Web Services,Iis,Iis 6,Windows Installer,我需要部署我的web服务。它需要使用自己的凭据在IIS中的单独应用程序池中运行 在VS2008中使用Web设置项目是否可以做到这一点 默认情况下,我似乎只能选择一个现有的应用程序池。我以前也经历过这种情况,不幸的是,您需要手动创建应用程序池或编写自定义操作来管理它 关于Grzenio在以下评论中提出的问题: “您能告诉我从哪里开始查找代码/帮助程序类吗?您是将项目保留为Web安装项目,还是仅使用标准应用程序安装项目?” 我在包含安装项目的解决方案中添加了一个名为InstallHelper的新项目

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

在VS2008中使用Web设置项目是否可以做到这一点


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

我以前也经历过这种情况,不幸的是,您需要手动创建应用程序池或编写自定义操作来管理它

关于Grzenio在以下评论中提出的问题:

“您能告诉我从哪里开始查找代码/帮助程序类吗?您是将项目保留为Web安装项目,还是仅使用标准应用程序安装项目?”

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

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

我还向setup project用户界面添加了许多文本框对话框。从这些对话中捕获的输入和状态通过字典传递给自定义安装操作。i、 e:

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安装项目还支持自定义操作和其他用户输入对话框,因此除了自定义操作外,您可能希望重新使用现有项目。

查看此文章,它将提供有关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();
通过这种方式,您可以使用自定义操作将应用程序池分配给新网站,覆盖installer类的提交方法

如果你仍在挣扎,请让我知道,我会尝试发送代码

问候 法耶兹
faiyazkhan@hotmail.com

我在.net 2.0中使用自定义操作来完成这项操作,以获取答案。你能告诉我从哪里开始寻找代码/助手类吗?您是否将项目保留为Web设置项目,或者只使用标准应用程序安装项目?我最初查看了Web安装项目,但选择使用标准安装项目,因为我的要求还包括必须安装windows服务和创建网站。只能在windows Server 2008计算机(即IIS7)上使用Microsoft.Web.Administration。要在Windows Server 2003计算机上对IIS 6.0进行编程管理,您可以改为尝试WMI:。您也可以尝试System.DirectoryServices: