Почему я не могу отладить мой сайт ASP.NET в Visual Studio?

Раньше я мог подключаться к своему процессу w3wp и отлаживать свое веб-приложение, но это больше не работает. Я понятия не имею, что изменилось, чтобы сломать это. Я использую Visual Studio 2008 SP1. И я отлаживаю в IIS, не используя собственный сервер ASP.NET (т.е. я не запускаю свой проект, я просто присоединяюсь к работающему процессу (w3wp).

Мои контрольные точки просто имеют "контрольная точка в настоящее время не будет достигнута. Исходный код отличается от исходной версии".

Что я пробовал:

  • Сделал решение Clean.
  • Сделал решение Rebuild.
  • Убедитесь, что в моем файле web.config отладка отладки = true.
  • Удалил папку bin
  • Перезапущенная Visual Studio
  • Перезапущенный IIS
  • Перезагрузил мой компьютер
  • Добавлен простой Response.Write, чтобы убедиться, что используется последняя DLL. Это.
  • Убедился, что Debug ASP.NET отмечен в свойствах моего проекта. Это.
  • Убедитесь, что все мои проекты скомпилированы в моей конфигурации сборки. Они есть.

Но ничего из этого не помогает. Я присоединяюсь к w3wp, но мои контрольные точки никогда не получают удар.

Есть идеи?

16 ответов

Недавно у меня возникла эта проблема, и в итоге я убедился, что Visual Studio вообще не работает в системе.

Затем зашли в эту папку и удалили все ее содержимое:

C:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

Проверьте ваш web.config для

<compilation debug="true">...

Когда вы "Присоединитесь к процессу", в окне "Вывод" должны быть показаны (при выводе вывода из "Отладки") все библиотеки, которые он загружает, и куда он их загружает - для библиотек DLL в папке /bin они обычно копируются в \Temporary ASP.NET Files\root\ папка - откуда вы читаете? Вы определенно очистили их оттуда?

Единственное, о чем я могу думать:

  1. Вы скомпилировали свой код в режиме "Release", а не "Debug" (не web.config) из выпадающего меню "Configuration Configuration".
  2. Файлы символов (.pdb) отсутствуют в папке /bin.

На вкладке "Build" свойств проекта вы находитесь в конфигурации "Active (Debug)", вы не отметили "оптимизировать код"?

Если вы нажмете "Дополнительно..." на этой вкладке, какое значение вы получите для "Отладочной информации"? Это "полный" или "нет"?

Отвечая на комментарий

Вам будет сложнее успешно отлаживать, если ваш код скомпилирован в режиме "Release", и вы часто будете получать сообщение "исходный код отличается", когда вы не перестраивали символы (файлы.pdb) после изменений - но вы скажем, что вы сделали чистую / перестроить, так что должны покрыть это.

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

У вас нет события пост-сборки, которое перемещает файлы в правильный каталог для вашего сайта, вы молча терпите неудачу?

У меня также была эта проблема, я решил ее, изменив тип кода "Присоединить к" на "Автоматический" в диалоговом окне "Присоединить к процессу". (Ранее у меня был установлен "Silverlight Code" из-за отладки другого процесса... может быть легко забыть изменить это обратно.)

Я знаю, что эта проблема была открыта в течение некоторого времени, но я думаю, что это то же самое, что я испытал:

Я не смог отладить мой код.aspx на стороне сервера. У меня был рабочий проект WepApp AnyCPU, и я хотел связать с некоторыми библиотеками x86, поэтому я создал цель отладки x86. Делал похожие вещи, перестраивал, останавливал разработку веб-сервера, перезагружал, очищал временные файлы, все безрезультатно.

Исправлена ​​проблема, изменяющая целевую папку на bin\ (была bin\x86\Debug).

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

Нужно иметь значение комментариев / описания чего-то вроде T-SQL, управляемого чем-то другим. Это тот, который вы хотите.

Я столкнулся с той же проблемой. Процесс w3wp занял много памяти и не хотел сбрасываться при публикации веб-приложения.

Нажмите Ctrl+Alt+Delete > Перейдите на вкладку "Процессы"> найдите процесс w3wp и убейте его. Запустите приложение еще раз (если это приложение mvc, просто перейдите по соответствующей ссылке, чтобы автоматически воссоздать процесс w3wp).

Предупреждения исчезнут после этого.

Вы проверили свой файл assembly.cs с этим атрибутом

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]

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

Вы запускаете какие-либо надстройки, которые могут повлиять на это? Или какие-либо инструменты, которые применяют операции после сборки к исходному коду, с помощью которого библиотеки DLL, с которыми вы начинаете отладку, были изменены после сборки, и на самом деле правильно, что это не тот же самый исходный код, поэтому отладка не будет работать?

Также пробовал сброс VS?

devenv.exe /resetsettings

Редактировать: если никакая информация не помогла вам здесь, несмотря на боль, возможно, стоит удалить и переустановить VS и SP1. Если вы пройдете через это, и проблема останется такой же, то, по крайней мере, она гарантирует, что проблема лежит в файле web.config или в настройках проекта.

Я перепробовал все перечисленные ниже варианты в моем Visual Studio 2013 Update 4.

  1. Сброс IIS
  2. Чистое решение и восстановление
  3. Удалите файлы из временной папки C:\Windows\Microsoft.Net\Framework...\ Временные файлы ASP.NET
  4. Проверьте, является ли тег компиляции отладочным или нет

Но ни одна из них не сработала, здесь я перечисляю две вещи, которые сработали для меня.

  1. Отключение опции "Просто мой код" Сервис -> Параметры -> Отладка -> Общие -> Снимите флажок Включить только мой код.
  2. Отредактируйте файл web.config и сохраните его (вы всегда можете создать пробел в любой строке в web.config, что и будет)

Обратите внимание, что это решение может зависеть от версии Visual Studio, и оба исправления работали для меня в моем обновлении 4 для Visual Studio 2013.

Убедитесь, что «Текущая страница», а не «Не открывайте страницу. Дождитесь запроса от внешнего приложения». проверяется в разделе Свойства-> Интернет-> Действие при запуске.

В моем случае у меня было консольное приложение, размещенное на веб-странице в.Net Framework 4.6.1. Когда я добавил отладку в условные символы компиляции, она начала работать:

У меня была эта проблема некоторое время, и я нашел свое решение на форуме MS (ссылка ниже). Инструмент диагностики отладки был виновником для меня, но мне не пришлось удалять его. У меня было настроено правило сбоя для процесса w3wp, и я просто удалил это правило и перезапустил все.

Microsoft Forum для Невозможно прикрепить ошибку

Я использовал расширение Visual Studio VSCommands, чтобы присоединить отладчик (удобно). Однако IIS Express работал, и я догадался, что это может помешать. Конечно, когда я закрыл IIS Express, внезапно я снова смог отладить.

Радость последовала.

В OpenVMS мы просто использовали:

Компиляция / отладка, затем ссылка / отладка

и это было все! Simples!!

но если серьезно, убедитесь, что в файле, в котором находится строка Debugger.Break, в свойствах "Копировать всегда" установлено значение перед повторной сборкой

добавьте этот код в свой файл .csproj

         <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <Optimize>false</Optimize>
    <DebugType>full</DebugType>
    <DebugSymbols>true</DebugSymbols>
  </PropertyGroup>
Другие вопросы по тегам