http://nginx.org/en/download.html
下载后放在项目的根目录下
文件夹名设置为Nginx
把配置中的默认监听的端口号改为100078
项目
->属性
->生成事件
->生成前事件命令行
添加如下
复制目录
xcopy /Y /i /e $(ProjectDir)\Nginx $(TargetDir)\Nginx
在CMD中打开
cd nginxpath
.\nginx.exe
使用CMD结束
taskkill /f /t /im nginx.exe
打开notepad
我们一般调用外部程序的方法
Process p = Process.Start("notepad.exe");
//关键,等待外部程序退出后才能往下执行
p.WaitForExit();
private static void StartNginx()
{
string basePath = AppDomain.CurrentDomain.BaseDirectory;
string nginxPath = System.IO.Path.Combine(basePath, "Nginx");
Process mps = new Process();
ProcessStartInfo mpsi = new ProcessStartInfo("nginx.exe");
mpsi.WorkingDirectory = nginxPath;
mpsi.UseShellExecute = true;
mpsi.RedirectStandardInput = false;
mpsi.RedirectStandardOutput = false;
mpsi.CreateNoWindow = true;
mpsi.WindowStyle = ProcessWindowStyle.Hidden;
mps.StartInfo = mpsi;
mps.Start();
//不要写下面这一行 程序会等待退出后才往下执行
//mps.WaitForExit();
}
说明
调用Nginx一定要注意以下参数的设置,否则不生效 mpsi.WorkingDirectory = nginxPath; mpsi.UseShellExecute = true; mpsi.RedirectStandardInput = false; mpsi.RedirectStandardOutput = false;
使用C#结束
private static void StopNginx()
{
Process[] processes = Process.GetProcessesByName("nginx");
foreach (Process p in processes)
{
string basePath = AppDomain.CurrentDomain.BaseDirectory;
string nginxPath = System.IO.Path.Combine(basePath, "Nginx", "nginx.exe");
if (nginxPath == p.MainModule.FileName)
{
p.Kill();
p.Close();
}
}
}
注意
进程名称不要写成nginx.exe,会找不到nginx进程。 本来我还尝试了用进程对象来结束,但是不行,因为Nginx启动会产生多个进程,单独结束掉一个是不行的!