【发布时间】:2011-02-08 09:29:26
【问题描述】:
我正在尝试将 IIS Express 与我的应用程序一起分发。 IIS Express 将在端口 80 上提供外部 Web 请求。
我在运行 IIS Express 和服务外部请求方面没有任何问题,但是微软以其无限的智慧决定从控制台窗口和系统托盘项运行 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 服务帐户下运行,但是当我尝试从 Windows 服务运行 IIS Express 进程时,它只是优雅地退出,错误代码为 0。
我尝试了许多方案(从代码 sn-p 中可以看出),但我似乎无法使用我的 Windows 服务运行 IIS Express 并隐藏该死的控制台窗口。
任何建议将不胜感激。
【问题讨论】:
-
附言。你能接受更多的答案吗?对你提出的问题。
标签: iis-express