Что такое debugattach.aspx и почему сервер не может его найти? - PullRequest
9 голосов
/ 17 декабря 2010

Я работаю на машине с 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?

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

Ответы [ 8 ]

5 голосов
/ 05 сентября 2013

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

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

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

3 голосов
/ 19 марта 2018

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

0 голосов
/ 21 февраля 2019

По соображениям производительности мы удалили все обработчики из элемента <system.webServer> нашего проекта MVC 5 web.config, кроме 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

0 голосов
/ 27 июня 2017

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

0 голосов
/ 13 июня 2015

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

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

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

0 голосов
/ 15 апреля 2013

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

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

0 голосов
/ 29 января 2013

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

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

0 голосов
/ 17 декабря 2010

Добавьте <compilation debug="true"> к вашему Web.config.

...