我正在使用C#自动执行某些程序
我被困在第四步,因为我必须在之后的其他程序中使用相同的端口。
我创建了一个将被调用以启动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的任何想法?
答案 0 :(得分:1)
你不应该杀死停止IIS的进程。拉下它下面的地毯并不是一件好事,而且,如果服务有任何重启动作,那么它将立即重新启动。
使用ServiceController(http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller(v=vs.110).aspx)启动和停止相应的服务。
还有其他方法可以控制IIS,例如使用WMI(我认为现在已弃用),但是使用ServiceController应该足以完成任务。