C# IIS 以编程方式创建网站缺少方法

本文关键字:网站 方法 创建 方式 IIS 编程 | 更新日期: 2023-09-27 18:35:45

我写了一个小工具,可以在Windows服务器上安装Web应用程序和所有需要的软件包。该工具创建应用程序池和所需的应用程序。在我的开发机器上一切正常,但在测试服务器上(使用 IIS 安装新的 w2k8r2),该工具崩溃并出现以下异常:

System.MissingMethodException: 找不到方法: 'Void Microsoft.Web.Administration.ApplocationPool.set_Startmode(Microsoft.Web.Administration.Startmode)'

这是我用来创建 appPool 的代码:

using (ServerManager serverManager = new ServerManager())
{
    try
    {
        if (!serverManager.ApplicationPools.Any(x => x.Name == appPoolName))
        {
            ApplicationPool appPool = serverManager.ApplicationPools.Add(appPoolName);
            appPool.ManagedRuntimeVersion = "v4.0";
            appPool.StartMode = StartMode.AlwaysRunning;
            appPool.ProcessModel.IdentityType = ProcessModelIdentityType.LocalSystem;
            serverManager.CommitChanges();
        }
        result = true;
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}

我已经使用服务器管理器安装了 IIS 管理工具和脚本。我是否缺少包或我的代码错误?

更新

正如PhillipH在他的回答中所写的那样,IIS 7.5不支持属性StartMode

C# IIS 以编程方式创建网站缺少方法

我只能建议你的开发机器没有运行IIS7.5,因为7.5是安装在Server 2008上的IIS。ApplicationPool.StartMode 被列为 IIS8 的一项新功能。

"IIS8 中的新增功能"https://blogs.msdn.microsoft.com/vijaysk/2012/10/09/iis-8-whats-new-application-pool-settings/

您可以检查该属性是否存在:

var attr = appPool.Attributes.FirstOrDefault(a => a.Name == "startMode");
if (attr != null) attr.Value = 1; // OnDemand = 0;   AlwaysRunning = 1