我已经编写了一个小工具,可以在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
。
答案 0 :(得分:2)
我只能建议您的开发计算机不运行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/
答案 1 :(得分:1)
您可以检查属性是否存在:
var attr = appPool.Attributes.FirstOrDefault(a => a.Name == "startMode");
if (attr != null) attr.Value = 1; // OnDemand = 0; AlwaysRunning = 1