Можно ли отлаживать веб-приложение 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

  1. открывается окно со списком процессов
  2. найдите процесс "w3wp" (если он не указан в списке) установите флажок "Показывать процессы от всех пользователей"

*, если их больше одного, вы можете выбрать их ВСЕ ИЛИ (для того, чтобы знать правильный) открыть IIS и щелкнуть правой кнопкой мыши веб-сайт, на котором вы хотите отлаживать > "управлять приложением" > "расширенные настройки..." > посмотреть для строки "пул приложений" на вкладке рядом с ней написано имя пула приложений, которое использует веб-сайт.

  1. выберите процесс w3wp из списка

  2. нажмите кнопку "Прикрепить"


в проекте разместите точку останова в коде, где вы хотите отлаживать.

если вы видите точку останова красного цвета, но внутренний цвет белый ввести изображение описание здесь, и когда вы его наводите, появляется следующее сообщение:

В настоящий момент точка останова не будет удалена. Никакие символы не загружены для этого документа.

это означает, что символы, не загруженные = правая/обновленная dll's, не были загружены! Создайте проект > перейдите в папку "bin" и скопируйте правильный dll (projectName.dll) +, также скопируйте (projectName.pdb), pdb, как карта для этой DLL.

скопируйте эти 2 файла в папку веб-сайта в файловой системе (там будет dll с тем же именем), замените его и добавьте также файл pdb.

Затем присоедините процесс снова, как и раньше, - теперь точка останова должна быть целиком красной, и когда вы загрузите сайт, точка брейка ударит.