Неверно Невозможно начать отладкуНевозможно присоединить к сообщению рабочего процесса ASP.NET в Delphi 2007 для .NET

Давно это видел, и наконец решил задать вопрос здесь. У меня есть несколько приложений, написанных на Delphi 2007 для .NET (ASP.NET 2.0), которые мне нужно поддерживать. Обычно при первом запуске приложения (используя IIS) я получаю классическое сообщение «Невозможно начать отладку на веб-сервере. Невозможно подключиться к рабочему процессу ASP.NET». Я просто снова нажимаю F9 (выполнить), и он запускается. Иногда мне приходится пытаться запустить несколько раз, прежде чем он действительно запустится.

Я использую 64-разрядную версию Windows 7 (и наблюдал тот же эффект на 64-разрядной версии Vista). У меня есть IIS, настроенный для ASP.NET, и у меня есть следующий код в моем файле Web.config.

  <system.webServer>
      <modules>
         <add name="DbgConnect" type="Borland.DbkAsp.DbkConnModule,Borland.dbkasp,Version=10.5.0.0,
           Culture=neutral, PublicKeyToken=b0524c541232aae7" preCondition="managedHandler" />
      </modules>
      <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>

Дело в том, что я в итоге могу запустить приложение в отладчике, иногда даже с первого раза. Много раз, когда я получаю отказ, это происходит примерно через 15 секунд после того, как я нажимаю «Выполнить», иногда даже после того, как я нажимаю одну или две (или три) страницы веб-приложения. И, да, когда Delphi входит в этот режим, я могу просто работать без отладки, и все в порядке (если я действительно не хочу отлаживать). И я могу просто продолжать пытаться работать в отладчике, и в конце концов это просто сработает.

Похоже, что отладчик Delphi .NET каким-то образом понимает, что приложение не может быть запущено, а затем сдается и останавливает процесс (который, как я уже упоминал, иногда явно запущен).

Я знаю других разработчиков, которые также видели такое поведение. Мой вопрос: кто-нибудь знает, как остановить это раздражающее поведение?


person Cary Jensen    schedule 02.02.2010    source источник
comment
Я почти уверен, что это происходит внутри Delphi 2007 для .NET. Похоже, что отладчик каким-то образом истекает. Я пришел к такому выводу, потому что иногда я могу щелкнуть 2 или 3 разные страницы приложения ASP.NET, прежде чем отобразится это сообщение об ошибке. Ясно, что сообщение об ошибке неверно. И ошибка, похоже, вызвана отладчиком. На данный момент я думаю, что вероятность того, что Embarcadero исправит эту функцию в устаревшей функции (Delphi для .NET), почти равна нулю.   -  person Cary Jensen    schedule 02.03.2010


Ответы (2)


Я не помню точное сообщение об ошибке, но я думаю, что видел что-то похожее на это в прошлом. Все, что я сделал, чтобы исправить это, это запустить «Восстановление» в .NET 2.0 Framework (через панель управления -> «Установка и удаление программ»). Затем, возможно, перезагрузите компьютер после этого ...

person Mikey    schedule 12.02.2010
comment
Сейчас я работаю над другим проектом. Когда я вернусь к Delphi для .NET, я попробую это. Спасибо за предложение. - person Cary Jensen; 17.02.2010
comment
Хорошо, вернемся к этому проекту. Я исправил .NET 2.0 Framework SDK (это единственный элемент .NET в апплете «Программы и компоненты». Я работаю в Windows 7). Вещи, кажется, немного лучше, но я все еще регулярно сталкиваюсь с поведением. - person Cary Jensen; 01.03.2010

Если у вас есть эта проблема, вы будете продолжать иметь эту проблему. Однако есть обходной путь.

Начните с запуска вашего проекта без отладки, а затем подключитесь к нему, как только он заработает. Для этого выберите Выполнить | Запустите без отладки или нажмите Ctrl-Shift-F9.

Когда ваше приложение запущено и вы хотите, чтобы службы отладчика были доступны, выберите Run | Прикрепить к процессу. В диалоговом окне «Присоединение к процессу» в раскрывающемся списке «Отладчик» выберите «Отладчик CodeGear .NET». Теперь IIS появится в списке «Выполняемые процессы». На моей машине он отображается как w3wp.exe. Снимите флажок «Пауза после прикрепления» и нажмите «Прикрепить». (После первого использования диалогового окна «Присоединиться к процессу» по умолчанию будет использоваться отладчик .NET, а флажок «Пауза после присоединения» не будет установлен.)

Теперь вы работаете с включенным отладчиком. Если вы нажмете точку останова, или обнаружите исключение, или выберите Run | Программа Пауза, отладчик будет загружен. Если вы хотите отключить отладчик, не закрывая приложение, выберите Run | Отключиться от программы.

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

Кроме того, есть приятный побочный эффект от использования этого подхода к отладке приложения Delphi для .NET. Как только вы запустите программу и обнаружите проблему, вы можете зайти в отладчик и посмотреть, что происходит внутри. Если вы обнаружите проблему, которую нужно исправить, отсоединитесь от процесса, исправьте проблему и перекомпилируйте. Вы можете оставить свое приложение работающим в IIS.

Как только проект будет перекомпилирован, следующая страница, которую вы откроете в приложении с помощью IIS, вызовет загрузку обновленной программы. Если вам снова понадобится отладчик, просто подключитесь к процессу IIS. Другими словами, вы отлаживаете, исправляете, перекомпилируете, отлаживаете, исправляете, перекомпилируете... без необходимости закрывать приложение в браузере.

person Cary Jensen    schedule 03.03.2010