繁体   English   中英

在C#中停止IIS

[英]Stopping IIS in C#

我正在使用C#自动化一些过程

  1. 启动IIS
  2. 在特定端口上的特定地址打开Internet Explorer
  3. 用户关闭浏览器
  4. 停止IIS

我被困在第四步,因为之后我必须将同一端口用于其他过程。

我创建了一个将被称为启动IIS的线程:

public class MyThread
{
    //thread to start IIS
    public static void Thread1()
    {
        //thread for running IIS
        using (Process proc = new Process())
        {
            proc.StartInfo.FileName = @"C:\Program Files\IIS Express\iisexpress.exe";
            proc.StartInfo.Arguments = @"/path:""c:\windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles"" /vpath:/asp.netwebadminfiles /port:61569 /clr:4.0 /ntlm";
            //proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.Start();
            proc.WaitForExit(); 
            //output from the process run
            Console.Out.WriteLine(proc.StandardOutput.ReadToEnd());
        }
    }
}

打开IE的代码是:

Thread thread1 = new Thread(new ThreadStart(MyThread.Thread1));
        thread1.Start();
        using (Process proc1 = new Process())
        {
            proc1.StartInfo.FileName = @"C:\Program Files\Internet Explorer\iexplore.exe";
            proc1.StartInfo.Arguments = @"http://localhost:61569/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=C:\Users\"+userName+@"\Documents\Visual Studio 2013\Projects\NN\&applicationUrl=/";
            proc1.StartInfo.UseShellExecute = false;
            proc1.StartInfo.RedirectStandardOutput = true;
            proc1.StartInfo.CreateNoWindow = true;
            proc1.Start();
            proc1.WaitForExit();
            //output from the process run
            Console.Out.WriteLine(proc1.StandardOutput.ReadToEnd());
        }

我试图创建另一个线程来杀死/中止原始线程,但这是行不通的。 我还尝试在控制台末尾写“ Q”,但这也无济于事。

关于关闭浏览器时如何停止IIS的任何想法?

您不应该取消停止IIS的过程。 将地毯拉到下面并不是一件好事,此外,如果服务具有任何重新启动操作,则它将重新开始重新备份。

使用ServiceController( http://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicecontroller ( v = vs.110 ) .aspx )启动和停止适当的服务。

还有其他控制IIS的方法,例如使用WMI(我认为现在已弃用),但是使用ServiceController应该足以完成您的任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM