Подтвердить что ты не робот

Как обозначить (установить заголовок) для процесса 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

4b9b3361

Ответ 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
);