这就是我目前正在做的事情
public static string RecycleSite(string siteName)
{
try
{
using (ServerManager iisManager = new ServerManager())
{
SiteCollection sites = iisManager.Sites;
foreach (Site site in sites)
{
if (site.Name == siteName)
{
ObjectState os = iisManager.ApplicationPools[site.Applications["/"].ApplicationPoolName].Recycle();
return "Recycle Successful";
}
}
}
return "Recycle Unsuccessful";
}
catch(Exception ex)
{
return "Recycle Unsuccessful: " + ex;
}
我已经查看了多个其他主题,但似乎没有人能找到我想要的答案。我想使用服务器管理器类来回收特定的IIS站点。此当前解决方案执行“循环”,但它也会杀死仍然存在的任何活动连接。 IIS管理器已设置好,因此我可以在当前实例上存在持久连接时开始新实例,直到这些连接自行关闭。
我的解决方案是正确的还是我需要以更直接的方式进行回收?这是控制台应用程序的一部分,该应用程序设置为以管理员身份运行,以便我正在调用的其他服务可以位于用户帐户下(出于安全原因)。在Server 2012 R2上使用IIS 8.5。