Как обозначить (установить заголовок) для процесса IIS Express?
У меня есть решение с несколькими сайтами, и я использую Cassini для разработки. Когда вышел IIS Express, я перешел на один из сайтов, чтобы использовать его, и все работает нормально. Я просто перешел на другой веб-сайт для использования IIS Express и сразу же столкнулся с проблемой отладки: IIS Express не маркирует свои процессы, поэтому теперь, когда у меня есть два из них, я не могу разделить их в разделе "Присоединить к процессу", диалоговое окно.
Есть ли способ установить IIS Express заголовок процесса? У кого-нибудь есть подсказки для того, чтобы рассказывать несколько экземпляров IIS Express для целей прикрепления отладчика?
Обновление
Круглый способ сделать это - выполнить контекстное меню "Показать все приложения" значка в трее IIS Express и ссылаться на PID из списка при подключении отладчика. Лучше, чем ничего, но было бы неплохо, если бы был лучший способ.
Обновление 2
Я добавил проблему с подключением: https://connect.microsoft.com/VisualStudio/feedback/details/729475/impossible-to-differentiate-iis-express-instances-when-attaching-debugger
Ответы
Ответ 1
Альтернативный вариант вы можете добавить этот код, чтобы запустить отладчик из вашей страницы. Его быстро и легко, и вы можете просто использовать скрытую локальную страницу, чтобы вызвать его и запустить свой отладчик.
System.Diagnostics.Debugger.Launch();
Ответ 2
Я запускаю экземпляры IISExpress из пакетного файла. Имя cmd файла затем отображается как имя процесса в приложении Attach to Process.
например: иметь это в файле MySite.cmd
"C:\Program Files (x86)\IIS Express\iisexpress.exe" /siteid:1
Появится в Column Title в Attach to Process как
MySite
Ответ 3
Не забудьте ссылку на System.Management...
public static Regex siteNamePattern = new Regex("/site:\"(?<sitename>[^\"]+)\"", RegexOptions.Compiled);
...
var iisExpressSiteNames = new ManagementObjectSearcher(
"select CommandLine, ProcessId from Win32_Process where Name='iisexpress.exe'")
.Get().Cast<ManagementBaseObject>().ToDictionary(
o => int.Parse(o["ProcessId"].ToString()),
o => siteNamePattern.Match(o["CommandLine"].ToString()).Groups["sitename"].Value
);