Я пытаюсь распространить IIS Express с моим приложением. IIS Express будет обслуживать внешние веб-запросы через порт 80.
У меня нет проблем с запуском IIS Express, а также с обслуживанием внешних запросов, однако Microsoft в своей бесконечной мудрости решила запустить IIS Express из окна консоли, а также из панели задач. Вы можете отключить лоток с помощью аргумента командной строки, но не окна консоли.
Я хочу запустить IIS Express без отображения окна консоли. Я также хочу запустить IIS Express из службы Windows.
Запуск следующего кода из моего приложения делает именно то, что я хочу:
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 просто грациозно завершается с кодом ошибки 0, когда я пытаюсь запустить его из службы Windows.
Я пробовал несколько сценариев (как вы можете видеть из фрагмента кода), но, похоже, нет способа заставить IIS Express работать с использованием моей службы Windows И скрыть проклятое окно консоли.
Любые предложения будут оценены.