.net重启iis线程池和iis站点程序代码分享
.net重启iis线程池和iis站点程序代码分享
发布时间:2016-12-29 来源:查字典编辑
摘要:重启站点:复制代码代码如下://////根据名字重启站点.(没重启线程池)//////staticvoidRestartWEbSite(st...

重启站点:

复制代码 代码如下:

/// <summary>

/// 根据名字重启站点.(没重启线程池)

/// </summary>

/// <param name="sitename"></param>

static void RestartWEbSite(string sitename)

{

try

{

var server = new ServerManager();

var site = server.Sites.FirstOrDefault(s => s.Name == sitename);

if (site != null)

{

site.Stop();

if (site.State == ObjectState.Stopped)

{

}

else

{

Console.WriteLine("Could not stop website!");

throw new InvalidOperationException("Could not stop website!");

}

site.Start();

}

else

{

Console.WriteLine("Could not find website!");

throw new InvalidOperationException("Could not find website!");

}

}

catch (Exception e)

{

Console.WriteLine(e);

}

}

/// <summary>

/// 重启完之后.要再检测下.是否开启了

/// </summary>

/// <param name="sitename"></param>

static void FixWebsite(string sitename)

{

try

{

var server = new ServerManager();

var site = server.Sites.FirstOrDefault(s => s.Name == sitename);

if (site != null)

{

if (site.State != ObjectState.Started)

{

Thread.Sleep(500);

//防止状态为正在开启

if (site.State != ObjectState.Started)

{

site.Start();

}

}

}

}

catch (Exception e)

{

Console.WriteLine(e);

}

}

重启iis线程池:

复制代码 代码如下:

/// <summary>

/// 线程池名字

/// </summary>

/// <param name="name"></param>

static void RestartIISPool(string name)

{

string[] cmds = { "c:", @"cd %windir%system32inetsrv", string.Format("appcmd stop apppool /apppool.name:{0}", name), string.Format("appcmd start apppool /apppool.name:{0}", name) };

Cmd(cmds);

CloseProcess("cmd.exe");

}

/// <summary>

/// 运行CMD命令

/// </summary>

/// <param name="cmd">命令</param>

/// <returns></returns>

public static string Cmd(string[] cmd)

{

Process p = new Process();

p.StartInfo.FileName = "cmd.exe";

p.StartInfo.UseShellExecute = false;

p.StartInfo.RedirectStandardInput = true;

p.StartInfo.RedirectStandardOutput = true;

p.StartInfo.RedirectStandardError = true;

p.StartInfo.CreateNoWindow = true;

p.Start();

p.StandardInput.AutoFlush = true;

for (int i = 0; i < cmd.Length; i++)

{

p.StandardInput.WriteLine(cmd[i]);

}

p.StandardInput.WriteLine("exit");

string strRst = p.StandardOutput.ReadToEnd();

//Debug.Print(strRst);

p.WaitForExit();

p.Close();

return strRst;

}

/// <summary>

/// 关闭进程

/// </summary>

/// <param name="ProcName">进程名称</param>

/// <returns></returns>

public static bool CloseProcess(string ProcName)

{

bool result = false;

var procList = new ArrayList();

foreach (Process thisProc in Process.GetProcesses())

{

var tempName = thisProc.ToString();

int begpos = tempName.IndexOf("(") + 1;

int endpos = tempName.IndexOf(")");

tempName = tempName.Substring(begpos, endpos - begpos);

procList.Add(tempName);

if (tempName == ProcName)

{

if (!thisProc.CloseMainWindow())

thisProc.Kill(); // 当发送关闭窗口命令无效时强行结束进程

result = true;

}

}

return result;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类