Можно ли отлаживать веб-приложение ASP.NET, которое не запускалось из Visual Studio?
Веб-сервер ASP.NET по умолчанию, который запускается из Visual Studio (Casini), немного неисправен на моей машине разработки, поэтому мне нравится публиковать на локальном экземпляре IIS на моей машине dev и просматривать там веб-приложение. Тем не менее, я не автоматически в "режиме отладки", когда запускаю приложение таким образом.
Я знаю, что VS 2010 имеет функцию отладки "Прикрепить к процессу", но я точно не знаю, как ее использовать. Что мне нужно сделать, чтобы иметь возможность отлаживать локальное веб-приложение IIS ASP.NET из Visual Studio? В частности:
- Какие настройки необходимо изменить в конфигурации моего веб-приложения?
- Что мне нужно изменить "Параметры пакета/публикации"?
- Что мне нужно изменить в IIS?
- Есть ли что-то особенное, что мне нужно сделать на экране "Прикрепить к процессу"?
Справочная информация. Я запускаю Visual Studio 2010 под Windows XP SP3 с IIS 5.1 и .NET 4.0.
Дополнительная информация:
Я должен добавить, что я попытался подключиться к aspnet_wp.exe, но когда я перехожу на страницу, которая, как я знаю, имеет точку останова, я получаю следующее сообщение, когда нахожусь над точкой останова "открытого круга":/p >
В настоящий момент точка останова не будет удалена. Для этого документа не были загружены никакие символы.
Ответы
Ответ 1
Мне никогда не приходилось работать с F5 в Visual Studio, даже когда он был настроен для развертывания на локальном сервере IIS. Я не уверен, в чем проблема, но в конечном итоге я смог заставить его работать гораздо более "вручную". Большая часть работы над этим заключается в том, чтобы убедиться, что вы генерируете символы отладки и развертываете их на своем веб-сайте. Вот шаги, которые я предпринял, чтобы в конечном итоге заставить его работать:
- Создайте новую папку для своего приложения на локальном жестком диске, который будет использоваться для вашего веб-приложения.
- Вручную создайте новый виртуальный каталог в IIS, который указывает на созданную вами папку.
- Убедитесь, что свойства веб-сайта или свойства виртуального каталога в IIS настроены на использование ASP.NET 4.0, если вы используете веб-приложение .NET 4.0.
- В VS 2010 щелкните правой кнопкой мыши на своем веб-проекте и нажмите "Опубликовать" . Используйте следующие настройки:
- Метод публикации: Web Deploy
- URL-адрес службы: http://localhost
- Сайт/приложение:
IIS Web Site Name
/Virtual Directory
- Вам нужно указать имя веб-сайта IIS, а затем имя только что указанного виртуального каталога. По умолчанию имя веб-сайта обычно является веб-сайтом по умолчанию. Например, если вы назвали свой виртуальный каталог MySolution.MyProject, вы должны указать веб-сайт по умолчанию /MySolution.MyProject как сайт/приложение.
- Отметьте как приложение IIS по назначению: я оставляю это без отметки.
- Оставьте лишние файлы по назначению (не удаляйте): В настоящее время я оставляю этот флажок неактивным.
- В VS 2010, щелкните правой кнопкой мыши на своем веб-проекте и выберите "Свойства". Используйте следующие настройки:
- На вкладке "Компиляция":
- Нажмите кнопку "Дополнительные параметры компиляции..." (я использую VB.NET, это может немного отличаться на С#).
- Убедитесь, что для параметра "Создать информацию об отладке" установлено значение "Полный". (Также есть опция для pdb-only, которую я не пробовал. Это также может работать).
- На вкладке "Веб":
- В разделе "Серверы" выберите "Использовать настраиваемый веб-сервер" и укажите адрес нового приложения; например: http://localhost/VirtualDirectory.
- ПРИМЕЧАНИЕ. Поскольку я не закончил отладку приложения с помощью F5, я не уверен, что мне нужно сделать этот шаг.
- На вкладке Пакет/Публикация Web:
- Вы должны иметь возможность использовать параметр Только файлы, необходимые для запуска этого приложения для развертывания элементов....
- Убедитесь, что Исключенные символы отладки не отмечены.
- ПРИМЕЧАНИЕ. В целях безопасности вы, вероятно, не захотите развернуть информацию об отладке в рабочей среде, если это абсолютно необходимо.
После того, как вы это сделали, вы должны быть готовы развернуть приложение, чтобы его можно было отлаживать. Вот шаги, которые я использую для развертывания и последующего отладки приложения:
- Щелкните правой кнопкой мыши на своем веб-проекте и нажмите "Опубликовать" .
- Убедитесь, что ваши настройки по-прежнему определены с шага 3 сверху.
- Нажмите кнопку "Опубликовать" . Это автоматически создаст приложение в соответствии с текущей конфигурацией сборки и опубликует указанный веб-узел.
- Перейдите на одну из страниц вашего веб-приложения, чтобы убедиться, что приложение запускается.
- В VS 2010 выберите меню Отладка и выберите "Присоединить к процессу". Выберите процесс ASP.NET, который выполняется (в Windows XP, aspnet_wp.exe) и нажмите "Прикрепить".
- Теперь вы можете добавить точки останова в свой код, который будет срабатывать при переходе на различные страницы вашего веб-приложения из браузера.
Хотя этот метод отлично работает, имейте в виду, что он не просто привязан к вашей локальной среде разработки. Если другой пользователь на другом компьютере должен был получить доступ к веб-приложению, я считаю, что точки останова будут срабатывать, пока вы отлаживаете процесс.
Ответ 2
А вам нужно использовать attach для процесса и target aspnet_wp.exe. Это может быть w3wp.exe в зависимости от вкуса ОС. У меня был макрос для этого, но он прекратил работать после VS2008.
Ответ 3
Я также разрабатываю свои веб-приложения на локальном IIS. Для локальной отладки IIS F5 всегда работал у меня.
Если вы должны использовать приложение для процесса по какой-либо причине, убедитесь, что вы либо подключаетесь к локальному процессу, либо удаленный отладчик работает на удаленном компьютере. Приложение должно быть развернуто заранее, скажем, путем запроса страницы в браузере. Используйте iisapp
(IIS 5.1, 6.0) или appcmd list wp
(IIS 7+), чтобы определить, какой идентификатор процесса принадлежит тому пулу приложений (только если у вас есть 2+ пула приложений), а затем переходите к Прикрепить к процессу.
Ответ 4
Щелкните правой кнопкой мыши на своем веб-проекте в VS, перейдите к параметрам запуска и выберите "Использовать настраиваемый сервер", вставив адрес локального хоста, который у вас есть для вашего сайта в IIS.
Хит F5, будет работать в IIS.
Ответ 5
Я никогда не делал никаких специальных настроек, а приложение для обработки гаджета работает очень хорошо. Просто присоединитесь к процессу aspnet_wp.exe и там вы идете.
Ответ 6
Я знаю, что вы решаете свою проблему, но, возможно, это поможет другим.
Отладка с помощью "Прикрепить к процессу" в VS:
- открыть VS
- перейдите в раздел "Отладка"
- и выберите "Прикрепить к процессу"
* шаги 2 и 3 можно заменить клавишей Ctrl + Alt + P
- открывается окно со списком процессов
- найдите процесс "w3wp" (если он не указан в списке) установите флажок "Показывать процессы от всех пользователей"
*, если их больше одного, вы можете выбрать их ВСЕ ИЛИ (для того, чтобы знать правильный) открыть IIS и щелкнуть правой кнопкой мыши веб-сайт, на котором вы хотите отлаживать > "управлять приложением" > "расширенные настройки..." > посмотреть для строки "пул приложений" на вкладке рядом с ней написано имя пула приложений, которое использует веб-сайт.
-
выберите процесс w3wp из списка
-
нажмите кнопку "Прикрепить"
в проекте разместите точку останова в коде, где вы хотите отлаживать.
если вы видите точку останова красного цвета, но внутренний цвет белый
, и когда вы его наводите, появляется следующее сообщение:
В настоящий момент точка останова не будет удалена. Никакие символы не загружены для этого документа.
это означает, что символы, не загруженные = правая/обновленная dll's
, не были загружены!
Создайте проект > перейдите в папку "bin" и скопируйте правильный dll
(projectName.dll) +, также скопируйте (projectName.pdb), pdb
, как карта для этой DLL.
скопируйте эти 2 файла в папку веб-сайта в файловой системе (там будет dll
с тем же именем), замените его и добавьте также файл pdb
.
Затем присоедините процесс снова, как и раньше, - теперь точка останова должна быть целиком красной, и когда вы загрузите сайт, точка брейка ударит.