2

我有一个程序将在 IIS 6 中创建一个新网站。如何让我的命令执行等到它完成。目前它不会等待,因此不会创建网站。

我不能使用 .bat 文件,因为DirectoryPathSiteNameAppPoolNamePortNumber是在运行应用程序时使用的。

下面的代码在后台线程而不是主线程上执行。

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = Environment.SystemDirectory + "/cmd.exe";
startInfo.Arguments = @"cd %systemroot%\system32" + " & " + @"cscript iisweb.vbs /create " + DirectoryPath + " " + SiteName + " /ap " + AppPoolName + " /b " + PortNumber + " & " + "exit";
process.StartInfo = startInfo;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
4

2 回答 2

4

我弄清楚了问题所在。

startInfo.Arguments = @"cd %systemroot%\system32" + " & " + @"cscript iisweb.vbs /create " + DirectoryPath + " " + SiteName + " /ap " + AppPoolName + " /b " + PortNumber + " & " + "exit";

/C在 startInfo.Arguments 的开头添加了它,它工作得很好。

这是有效的答案。

 startInfo.Arguments = @"/C cd %systemroot%\system32" + " & " + @"cscript iisweb.vbs /create " + DirectoryPath + " " + SiteName + " /ap " + AppPoolName + " /b " + PortNumber + " & " + "exit";
于 2013-05-29T12:57:38.547 回答
0

你想在主线程上运行你的命令吗?如果是这样,您不想等到后台线程完成吗?

于 2013-05-28T20:22:07.800 回答