Что такое debugattach.aspx и почему сервер не может его найти?

Я разрабатываю на машине XP (SP3) с VS 2010 и IIS 5.

У меня есть две версии одного и того же сайта. Мы выпустили нашу первую производственную версию, поэтому я разветвил код на новое дерево каталогов и настроил новые виртуальные каталоги в IIS, чтобы они указывали на новые деревья. Проекты настроены для работы в IIS, а не на сервере VS. Основной сайт представляет собой проект на основе MVC 2.

Моя проблема в том, что когда я нажимаю F5 в Visual Studio 2010, чтобы начать отладку новой версии, я получаю сообщение «Невозможно начать отладку на веб-сервере. Веб-сервер не может найти запрошенный ресурс». Я провел большую часть вчерашнего дня, пытаясь выяснить, какой ресурс он искал, но не смог найти. Это происходит до того, как он попадет в «Запуск приложения». В конце концов я подумал о просмотре веб-журналов и обнаружил, что всякий раз, когда я нажимаю клавишу F5, веб-журнал показывает запрос DEBUG для /debugattach.aspx с кодом возврата 404 (не найдено). Если я запускаю ту же последовательность на старой версии, она показывает то же самое, но сначала с кодом 401, а затем запрос повторяется с кодом 200.

Моя первая мысль заключалась в том, что VS, должно быть, записывает файл «debugattach.aspx», а затем вызывает его, и, возможно, у него нет разрешения на запись в каталог, но, насколько я могу судить, оно есть.

Я погуглил debugattach.aspx, и первые несколько страниц статей, которые были возвращены, похоже, относятся к блокировкам и тайм-аутам, в основном в IIS 7 и VS 2005. Кажется, ничего применимого к этой ситуации.

Глядя на то, что отличается между старой версией, которая работает, и новой версией, которая не работает, единственное, что есть, это настройка IIS для виртуальных каталогов и web.config в самом коде. Но я просмотрел два сайта бок о бок и не могу найти никаких различий, объясняющих такое поведение.

У кого-нибудь есть ключ, которым они могут поделиться со мной? Или кто-нибудь может указать мне на какую-либо документацию о том, что именно представляет собой/делает debugattach.aspx, что делает HTTP-запрос DEBUG и/или как их использует VS?

Заранее спасибо.


person Dave Hanna    schedule 17.12.2010    source источник
comment
Проигнорируйте, пожалуйста. Я нашел решение. Я не понимаю этого, но я заставил его работать. Я вернулся еще раз и сравнил свойства IIS двух сайтов бок о бок и обнаружил разницу. В сопоставлении расширения приложения, где я добавил aspnet_isapi.dll в качестве сопоставления с подстановочными знаками, чтобы URL-адреса без расширения выполнялись через сопоставление MVC, флажок Scripting Engine был установлен на неработающем сайте и не установлен на сайт, который был. Я удалил это и попробовал снова, и началась отладка.   -  person Dave Hanna    schedule 17.12.2010
comment
хотя это старый пост, вы все равно можете получить кредит за публикацию собственного ответа =)   -  person killthrush    schedule 22.03.2016


Ответы (9)


На основании этой старой публикации, DebugAttach.aspx реализуется обработчиком HTTP System.Web.HttpDebugHandler. На самом деле я нигде не видел ссылок на этот обработчик в IIS7 - возможно, эта реализация была объединена с каким-то другим обработчиком в будущем. Хотя определенно какой-то обработчик. Когда он работает, вы видите 200 (успешных) сообщений в журналах.

У меня была одна и та же проблема двумя разными способами, когда отладка F5 не удалась в VS2010 из-за проблемы с обработчиком отладки. Используя журналы отслеживания неудачных запросов IIS, я смог увидеть случаи, когда модули IIS мешали работе. В одном случае UrlScan.dll блокировал команду DEBUG. В другом случае перенаправление с HTTP на HTTPS приводило к тому, что обработчик отладки возвращал 302. В обоих случаях VS выдал похожий диалог.

В любом случае, хитрость здесь, похоже, заключается в том, чтобы выяснить, как можно заблокировать запрос DEBUG к этому URL-адресу.

person killthrush    schedule 05.09.2013
comment
Visual Studio будет регистрировать ошибки, связанные с DebugAttach.aspx, здесь: %UserProfile%\AppData\Local\Temp\Visual Studio Web Debugger.log (если у вас нет этого файла или если это старый файл, тогда ваша проблема вероятно, не связано с DebugAttach.aspx.) - person Brandon S; 22.03.2016

В моем случае я создал пустое веб-приложение с VS2017 в Windows 10. Когда я снял флажок для отладчика ASP.NET в разделе «Настройки проекта» -> «Веб», проблема исчезла. До этого я пробовал почти все предложения, чтобы решить проблему.

person J Cox    schedule 19.03.2018
comment
+1 ты сэр. Исправлена ​​моя проблема, которая поглощала часы. Моя официальная ошибка: «Ошибка: невозможно начать отладку на веб-сервере». Удаленный сервер вернул ошибку: (403) Запрещено - person BoombaleOsby; 12.06.2019

Из соображений производительности мы удалили все обработчики из элемента <system.webServer> элемента web.config нашего проекта MVC 5, кроме StaticFile и ExtensionlessUrlHandler-Integrated-4.0, а затем начали получать эту ошибку при отладке из Visual Studio.

После некоторого исследования мы обнаружили, что при обычном использовании любой модуль, обрабатывающий этот запрос, просто возвращает ошибку HTTP 401 (несанкционированный доступ). Мне не удалось выяснить, что именно это за модуль, но я смог найти ответственный класс: System.Web.HttpDebugHandler.

Поэтому мы добавили в наши обработчики web.config следующую строку:

<add name="DebugAttachHandler" path="DebugAttach.aspx" verb="DEBUG"
    type="System.Web.HttpDebugHandler" resourceType="Unspecified" requireAccess="Script"
    preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />

При попадании по этому URL-адресу IIS выдает ошибку 401, как и при включении всех обработчиков, поэтому Visual Studio снова счастлива.

См. также: https://developercommunity.visualstudio.com/content/problem/464980/unable-to-start-debugging-a-web-project-when-vs-ge.html

person Ian Kemp    schedule 21.02.2019

Я просто столкнулся с этим. Я отключил параметр Разрешить неуказанные расширения имен файлов в разделе Фильтрация запросов на своем локальном сервере IIS (чтобы соответствовать нашим усиленным настройкам безопасности в других средах). Оказывается, .aspx блокировался. Я снова включил настройку и смог подключиться с помощью отладчика. Поэтому я снова отключил его и добавил разрешение на уровне сайта для .aspx, и я снова могу подключиться к отладчику.

Мне также любопытно, почему отладчик ищет debugattach.aspx и терпит неудачу с этой ошибкой. Тем более, что мое приложение - MVC, и мне не нужно обслуживать .aspx.

person Sean B    schedule 28.01.2013

У меня была карта сценариев с подстановочными знаками для версии .NET 4 aspnet_isapi.dll, которая вызывала это. Я смог изменить сопоставление сценария, чтобы игнорировать глагол DEBUG (используя только глаголы, необходимые для моего приложения), и это позволило VS автоматически подключаться.

Сказав это, я в конечном итоге использовал либо веб-сервер разработки VS, либо IIS Express, чтобы заставить мой сайт работать на компьютере с XP, потому что IIS 5.1 не понравилось сочетание карты сценариев с подстановочными знаками и маршрутизации ASP.NET.

person Holistic Developer    schedule 15.04.2013

Если вы используете VS2010 или более позднюю версию и установили .Net 4.x или более позднюю версию, попробуйте переименовать подкаталог «v3.0» (например, «переименовать C:\Windows\Microsoft.Net\Framework\v3.0 v3.0). .ORIGINAL"), перезагрузите компьютер и повторите попытку отладки в Visual Studio.

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

Я использую Visual Studio 2012 уже две недели, и я серьезно не могу поверить, насколько все быстро (опять же!). Запуск отладчика по F5 теперь мгновенный, и остановка сеанса отладки тоже мгновенная. Всякие глючные и лаги в поведении прекратились, и пока я не увидел ни одного побочного эффекта.

person jerhewet    schedule 12.06.2015

Решение, которое работает для меня, состояло в том, чтобы перезапустить VStudio в режиме «Запуск от имени администратора».

person Manpreet Gulati    schedule 27.06.2017

Недавно я столкнулся с этой проблемой с файлом debugattach.aspx. Для меня это началось с сообщения об ошибке при попытке отладки приложения ASP.NET через VS 2017. Проведя два дня, следуя всем предложениям в сети, я наконец наткнулся на эту вещь debugattach.aspx. Я тоже хотел знать, что это такое и почему IIS возвращал ответ 403-Forbidden на запросы об этом.

Короче говоря, это случилось со мной, потому что приложение, которое я хотел отладить, оказалось в виртуальном каталоге другого веб-приложения. Я должен был убедиться, что флаг <compilation debug="true" был установлен в «родительском» приложении, хотя меня не интересовала его отладка.

Головокружение в конце. Надеюсь, это поможет кому-то еще, кто пытается отследить проблемы, связанные с debugattach.aspx.

person robcom88    schedule 04.03.2021

Добавьте <compilation debug="true"> в свой Web.config.

person SLaks    schedule 17.12.2010
comment
SLaks, я ценю ответ, но для отладки установлено значение true с первого дня этого проекта. - person Dave Hanna; 17.12.2010