Sto tentando di distribuire IIS Express con la mia applicazione. IIS Express servirà le richieste Web esterne sulla porta 80.Come eseguire IIS Express come processo avviato tramite un servizio Windows
Non ho problemi nell'esecuzione di IIS Express e al servizio di richieste esterne, tuttavia Microsoft nella sua infinita saggezza ha deciso di eseguire IIS Express da una finestra della console e una voce nella barra delle applicazioni . È possibile disabilitare l'elemento vassoio da un argomento della riga di comando ma non dalla finestra della console.
Voglio eseguire IIS Express senza visualizzare la finestra della console. Voglio anche eseguire IIS Express da un servizio di Windows.
L'esecuzione del seguente codice da dentro il mio applicazione fa esattamente quello che voglio:
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();
Ovviamente io sono in esecuzione come amministratore. Sembra che IIS Express debba essere eseguito con i privilegi di amministratore per servire richieste esterne e per ascoltare sulla porta 80.
Il mio servizio Windows gira sotto l'account del servizio Windows che credo abbia i privilegi completi ma il processo IIS Express esce con grazia con un codice di errore 0 quando provo ad eseguirlo dal servizio Windows.
Ho provato una serie di scenari (come puoi vedere dal frammento di codice) ma sembra che non ci sia modo per far funzionare IIS Express usando il mio servizio Windows E nascondere la finestra della console darn.
Qualsiasi suggerimento sarà apprezzato.
PS. puoi accettare anche più risposte, alle domande che hai posto. –