Как подключить отладчик к IIS вместо ASP.NET Development Server?
У меня есть веб-сайт ASP.NET, и когда я нажимаю клавишу F5, он автоматически подключается к серверу разработки ASP.NET. Как вместо этого присоединиться к рабочему процессу IIS при нажатии клавиши F5?
5 ответов
Откройте свойства проекта, перейдите на веб-вкладку и выберите опцию для IIS.
Это фактически запускает экземпляр приложения в IIS и присоединяет отладчик. Если вы хотите подключиться только к существующему экземпляру IIS, выберите "присоединить к процессу" в меню отладки.
Отладка-> Присоединить к процессу...
Выберите процесс aspnet_wp.exe из списка.
Если вы работаете с IIS > версии 5, процесс будет w3wp.exe, и он будет один для каждого пула приложений (поэтому, если вы не знаете, какой пул приложений вы используете, вам нужно подключиться ко всем из них).
Отладка -> Присоединить к процессу из меню VS.
Чтобы узнать, к какому процессу w3wp.exe подключиться, вы можете использовать следующую команду на сервере 2008
c:\%systemroot%\system32\inetsrv\appcmd list wp
В то время как на Windows 2003 это
c:\%systemroot%\system32\cscript iisapp.vbs
Для получения дополнительной информации см. PID пула приложений IIS.
Однако, если у вас есть доступ к диспетчеру задач (task mgr.exe), вы можете увидеть там непосредственно имя процесса вместе с идентификатором процесса, и в большинстве случаев столбец "имя пользователя" процесса будет таким же, как приложение имя пула (конечно, вы должны установить эти столбцы, чтобы они были видны в диспетчере задач для просмотра информации).
Но обратите внимание, что все методы будут отображать только те процессы, которые выполняются в данный момент, а это означает, что если ваш конкретный процесс завершил работу из-за простоя, вы должны сначала использовать сайт, чтобы вывести процесс в список.
Кроме того, если приложение представляет собой "Веб-сад" (в котором имеется более одного файла w3wp.exe), то даже после подключения к правильному процессу все еще нет гарантии, что точки останова будут достигнуты, поскольку трафик на сайт может быть направлен на другой процесс.
Также обратите внимание, что если вы подключаетесь к приложению, работающему в режиме выпуска, оно теперь будет работать в режиме отладки, что означает, например, что не будет ограничений по времени ожидания (что может быть проблемой, если вы на самом деле пытаетесь устранить ошибку тайм-аута).
Если вы хотите подключиться к удаленному процессу, вот лучший совет:
- Убедитесь, что брандмауэр не блокирует, открыв соответствующие порты или полностью отключив его (просто не забудьте включить его снова, когда закончите).
- У вас должна быть учетная запись домена Windows с правами администратора на удаленном компьютере или учетная запись - с тем же именем пользователя и паролем, что и на локальном компьютере, на котором работает VS - на удаленном компьютере.
- На компьютере с установленным VS перейдите в папку (путь установки Visual Studio)\Microsoft Visual Studio (номер текущей версии)\Common7\IDE\Remote Debugger(версия для удаленного компьютера) и скопируйте и вставьте эту папку на удаленный компьютер или предоставьте общий доступ к этой папке. папку, чтобы она была доступна с удаленного компьютера.
- На удаленном компьютере войдите в систему как тот же пользователь, что и на локальном компьютере (см. Шаг 2), оттуда перейдите к скопированной или общей папке на шаге 3, щелкните правой кнопкой мыши "msvsmon.exe" и в контекстном меню выберите "Запуск от имени". Администратор".
- Удаленный монитор должен запуститься и заявить, что он запускает сервер обычно под именем (user)@(remote machine) или любым другим именем.
- В VS выберите Debug -> Attach To Process из меню, оставьте транспорт на "Default" и для "Qualifier Name" введите имя с шага 5.
Если все пойдет правильно, появится список процессов на удаленной машине.
Конечно, в этом вопросе есть намного больше, и для отладки нативного кода процесс может быть еще проще, но шаги, которые я перечислил здесь, должны работать в каждом случае.
Более подробную информацию вы можете найти на http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx или в MSDN, а также на многих публикациях на этом сайте.
Надеюсь, это поможет.
Или вы можете использовать один из подключаемых модулей IIS к Visual Studio.
Мое предпочтительное расширение - VSCommands (для VS 2010 - 2012 или 2013, но еще не 2015) или ReAttach (работает в 2017 году).
Перейдите в свойства веб-приложения. Выберите раздел "Параметры запуска" и измените с "Использовать веб-сервер по умолчанию" на "Использовать пользовательский сервер". Введите " http://localhost/" в базовый URL.
(предполагает VS 2008)