我试图将IIS Express与我的应用程序一起分发。 IIS Express将在端口80上提供外部Web请求。如何将IIS Express作为通过Windows服务启动的进程运行
我在运行IIS Express以及服务外部请求方面没有问题,但Microsoft以其无限智慧决定从控制台窗口以及系统托盘项目运行IIS Express 。您可以通过命令行参数而不是控制台窗口禁用托盘项目。
我想在不显示控制台窗口的情况下运行IIS Express。我也想从Windows服务运行IIS Express。
从我的应用程序中运行下面的代码不正是我想要的:
Directory.SetCurrentDirectory(string.Format("{0}\\IIS Express", iisProgramDirectory));
process.EnableRaisingEvents = true;
//process.Exited += new EventHandler(process_Exited);
process.StartInfo.FileName = "iisexpress.exe";
process.StartInfo.Arguments = string.Format("\"/config:{0}webservice\\config\\applicationhost.config\"", dataDirectory);
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//process.StartInfo.UserName = "Administrator";
//System.Security.SecureString securePwd = new System.Security.SecureString();
//string password = "**********";
//char[] pword = password.ToCharArray();
//for (int i = 0; i < pword.Length; i++)
//{
// securePwd.AppendChar(pword[i]);
//}
//process.StartInfo.Password = securePwd;
process.Start();
显然我以管理员身份运行。 IIS Express显然需要以管理员权限运行以服务于外部请求以及侦听端口80.
我的Windows服务在Windows服务帐户下运行,我认为它具有完全权限,但IIS Express进程只是优雅地退出当我尝试从Windows服务运行它时,错误代码为0。
我已经尝试了很多场景(正如你可以从代码片断中看到的那样),但似乎没有办法让IIS Express运行使用我的Windows服务并隐藏了darn控制台窗口。
任何建议,将不胜感激。
PS。你能否接受更多的答案,以及你提出的问题。 – 2011-05-23 04:06:45