Post promemoria. Se abbiamo la necessità di eseguire l’hosting di un servizio WCF su Windows Vista, Windows Server 2008R2 o Windows 7 tramite ad esempio un’applicazione console (Windows Form o WPF ) è necessario eseguire una “prenotazione” dello spazio dei nomi URL per lo specifico account DOMAIN\User. Per eseguire questo scopo in modo programmatico (e non avere la necessità di creare un file d’installazione) allora possiamo scrivere del codice tipo:
string batContent = string.Format(@"netsh http add urlacl url=http://+:{0}/ user={1}\{2}",
uriToRegister.Port, Environment.MachineName, Environment.UserName);
string batPath = "NetBat.bat";
System.IO.File.WriteAllText(batPath, batContent);
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.Verb = "runas";
startInfo.FileName = "cmd.exe";
startInfo.Arguments = string.Format("/c {0}{1}{0}", (char)34, batPath);
Process p = System.Diagnostics.Process.Start(startInfo);
p.WaitForExit();
per la registrazione dello spazio dei nomi URL nell’urlacl dello specifico account DOMAIN\User. Possiamo utilizzare del codice tipo:
string batContent = string.Format(@"netsh http delete urlacl url=http://+:{0}/ user={1}\{2}",
uriToUniregister.Port, Environment.MachineName, Environment.UserName);
per la rimozione. Il codice crea un file con estensione “.bat” eseguito tramite linea di comando. Ovviamente l’esecuzione del codice richiede l’elevazione dei privilegi dell’utente (se necessario). Il codice può essere utilizzato anche in caso di applicazioni ClickOnce.