【问题标题】:C# IIS programmatically site creation Missing MethodC# IIS 以编程方式创建站点缺少方法
【发布时间】:2016-02-22 15:28:01
【问题描述】:

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

System.MissingMethodException: 找不到方法:'无效 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 automation


    【解决方案1】:

    我只能建议您的开发机器没有运行 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/

    【讨论】:

    • 明天我在办公室的时候我会检查这个。我的开发机器在 Windows 10 和最新的 IIS 上运行。
    • 所以 Server 2008 将运行 IIS7.5 并且可能不支持 StartMode 属性。
    • 就是这样。我已经删除了 appPool.StartMode = StartMode.AlwaysRunning; 行,它的工作原理应该是这样。
    【解决方案2】:

    可以检查属性是否存在:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多