У меня есть приложение ASP.NET MVC (бета), над которым я работаю, и мне сложно определить, что я делаю не так, или мой Application_Start
метод в Global.asax.cs фактически не запускается при попытке отладить приложение.
Я ставлю точку останова в строке в моем Application_Start
методе и ожидаю, что при попытке отладки приложения точка останова попадет ... но это никогда не происходит. Не после перезагрузки IIS, не после перезагрузки, никогда. Я что-то упускаю? Почему этот метод никогда не вызывается?
c#
asp.net-mvc
Боб Йексли
источник
источник
global.asax
файл просто отсутствовал. так что это также стоит проверить :-)Ответы:
Если это в IIS, приложение может быть запущено до того, как присоединится отладчик. Если это так, я не уверен, что вы можете спать достаточно долго, чтобы привязаться.
В Visual Studio вы можете прикрепить отладчик к процессу. Это можно сделать, нажав Отладка >> Присоединить к процессу. Присоединитесь к браузеру, а затем нажмите ваше приложение. Чтобы быть в безопасности, перезапустите IIS и перейдите на сайт. Я не уверен на 100%, что это решит проблему, но это будет намного лучше, чем запуск потока сна в App_Start.
Другой вариант - временно разместить встроенный веб-сервер до завершения отладки приложения.
источник
Примечание. Хорошей простой альтернативой использованию встроенного «Visual Studio Development Server» или IIS Express (например, потому что вы разрабатываете с использованием IIS и у вас есть особые настройки , необходимые для правильного функционирования вашего приложения), это просто продолжать работать в IIS (I использовать пользовательский веб-сервер + запись файла хостов + привязка IIS к тому же домену)
Ваша точка останова должна быть удачной, и вы можете продолжить отладку в своей естественной среде обитания IIS . Большой !
источник
Следующее поможет в любом случае (независимо от того, используете ли вы IIS, Cassini или что-то еще):
Почему это работает? При изменении web.config веб-сервер (IIS, Cassini и т. Д.) Выполняет перезапуск, но в этом случае (по какой-либо причине) процесс остается прежним, поэтому вы продолжаете подключаться к нему с помощью отладчика (Visual Studio). ).
источник
У меня тоже возникают проблемы с точками останова в application_start с размещенным приложением IIS. Хороший обходной путь - использование Debugger.Break (); в коде вместо точки останова VS
источник
У меня точно такая же проблема. Я сделал много переименований в моем решении. После этого у меня появилось два неработающих веб-приложения и еще несколько веб-приложений были в порядке. Я получил ошибку, что у меня неправильные маршруты. Когда я попытался установить точку останова в
Application_Start
методе, а затем перезапустить IIS, VS не прерывал выполнение. С работоспособным веб-приложением перерыв работал. Затем я вспомнил, что «чистое решение» и «перестроение» не удаляют сборки, оставшиеся после переименования. И это было решением! Я вручную почистилbin
каталоги своих багги-веб-приложений, а затем увидел новую ошибку вGlobal.asax
Inherits=""
атрибуте, на которую ссылалась старая dll. Я поменял его на новый и перерыв стал работать. Предположим, что во время переименования Global.asax не обновлялся,источник
У нас была такая же проблема в проекте, который мы взяли на себя после того, как его построил другой поставщик. Проблема заключалась в том, что, хотя предыдущий поставщик в Global.asax.cs написал несколько команд, которые могли бы заставить вас поверить, что он используется, он фактически полностью игнорируется. Global.asax не наследовал от него, и этот файл легко никогда не увидеть, если присутствует файл .cs - нужно щелкнуть правой кнопкой мыши Global.asax и щелкнуть View Markup, чтобы увидеть его.
global.asax:
Необходимо изменить на:
Где ProjectNamespace - это любое пространство имен вашего класса Global.asax.cs (обычно это имя вашего проекта).
В нашем случае файл содержал несколько встроенных кодов, некоторые из которых были скопированы из файла .cs, некоторые нет. Мы просто сбросили встроенный код в файл .cs и постепенно объединили наши изменения обратно.
источник
Попробуйте переключить режим управляемого конвейера для пула приложений в «Классический» вместо «Интегрированный». Это решило проблему для меня. Разглядывая причину сейчас ...
(Реквизиты для этого ответа принадлежат Флоресу (см. Его комментарий к его собственному ответу), я просто хотел представить это как отдельный ответ, чтобы привлечь к нему больше внимания)
источник
Убедитесь, что ваш global.asax не находится в подкаталоге. Он должен быть размещен на корневом уровне в вашем проекте.
источник
Global.asax.cs
и ожидал, что он будет работать. Вам нужно создать его, используяAdd
->New Item
->,Global Application Class
чтобы он создавался с соответствующимGlobal.asax
файлом конфигурации веб-форм.У нас была похожая проблема, где global.asax.cs игнорировался.
Оказывается, сайт был обновлен с предварительно скомпилированного веб-сайта .NET 2 до сайта .NET 4.0. На сервере
PrecompiledApp.config
файл не был удален из корневой папки. После удаления и повторного использования пула приложений IIS и касания web.config для перезапуска приложения код в Global.asax.cs начал работать нормально.источник
Однажды у меня возникла проблема, когда Global.asax и Global.asax.cs фактически не копировались в папку IIS сценариями развертывания ... Так что это работало при отладке на сервере разработки, но не в IIS.
источник
Поздняя запись ...
Чтобы проверить, запускается ли приложение IIS до того, как отладчик успел присоединиться, просто добавьте его в верхнюю или нижнюю часть ваших GLOBAL.ASAX
Application_Start
.источник
Когда вы говорите «отладка», подразумеваете ли вы на самом деле запуск приложения из встроенного веб-сервера Visual Studio для отладки, или вы подразумеваете подключение к процессу в IIS? Если это первое, вы должны нажать Application_Start, но если это второе, может быть сложно быть в процессе достаточно рано, чтобы его поймать.
источник
Закрыть В Visual Studio и удалить
bin
иobj
папки в веб - проекте (или всех проектов в растворе).Вот команды для удаления этих папок из всех ваших проектов:
источник
Я сделал некоторые изменения, основанные на «Анализ кода при сборке» из Visual Studio. Анализ кода предложил «CA1822 Пометить элементы как статические» для Application_Start () в Global.asax. Я сделал это и закончил с этой проблемой.
Я предлагаю подавить это сообщение анализа кода и не изменять сигнатуру методов / классов, автоматически создаваемых платформой, используемой для начальной загрузки приложения. Сигнатура метода Application_Start, вероятно, была нестатической по причине.
Я вернулся к этому методу-подписи, и Application_Start () снова выстрелил:
источник
Я столкнулся с этой проблемой при использовании статической страницы (например, index.html) в качестве начальной страницы - Application-Start не вызывается. Я обнаружил, что обслуживание статической страницы на самом деле не запускает приложение. Запрос страницы .aspx делает.
источник
Убедитесь, что пространства имен в Global.asax и Global.asax.cs совпадают. Если они отличаются, он не выдаст никакой ошибки, но не достигнет точки останова также потому, что он вообще не выполняет application_start.
источник
Я думаю, что событие запуска приложения срабатывает только тогда, когда первый запрос сделан, вы заходите на свой сайт (то есть делаете запрос)?
источник
У меня была эта проблема в проекте .net 4 web forms vs2010, и я попробовал все, что упоминалось на этой странице. В итоге удаление и добавление global.asax фактически решило проблему для меня.
источник
У меня та же проблема, не могу поймать Application_Start. И причина была в том, что это не стрельба из-за несоответствия в файле разметки. Файл разметки Global.asax наследовал другой класс ...
источник
Вы проверили настройки проекта? У меня была эта проблема, и у меня был начальный URL, идущий на другой порт, чем порт моего сервера. Мне потребовалось слишком много времени, чтобы понять ...
источник
После того, как я попробовал столько других ответов, сколько было применимо в моей ситуации, и мне не повезло ни с одним из них, я вошел в свойства веб-проекта (проект на стороне сервера для приложения Silverlight, использующего службы RIA), щелкнул по кнопке Вкладка «Интернет» и изменил выбранный сервер с «Локальный IIS» на «IIS Express». (Обратите внимание, я использую VS2013.) Это решило проблему. Application_Start выполняется в «IIS Express», но не в «Local IIS». Интересный...
источник
Я пытался пошагово пройти через код в RegisterRoutes (), который вызывался с момента запуска приложения и не достигал моей точки останова. Я определил, что Application_Start не вызывали. Мне пришлось внести изменения, чтобы сделать поверхностное изменение в App_start / RouteConfig.cs и сохранить его до вызова Application_Start. Я предполагаю, что эти файлы куда-то кешируются и не вызываются, если не внесены изменения.
источник
Моя же проблема была решена путем добавления ссылки проекта
System.Web.Routing
в проектеисточник
Если вы используете System.Diagnostics.Debugger.Break (); Обходной путь (который я считаю вполне подходящим для временного использования), и он «просто не работает» на вашем компьютере с Windows 8. Причиной является ошибка в Visual Studio «Отладка как раз вовремя».
Исправление заключается в следующем: исправить ключ для «отладчика Visual Studio Just-In-Time»
Откройте regedit и перейдите к HKEY_CLASSES_ROOT \ AppID {E62A7A31-6025-408E-87F6-81AEB0DC9347} для значения реестра 'AppIDFlags', установите флаг 0x8
Более подробная информация здесь: http://connect.microsoft.com/VisualStudio/feedback/details/770786/just-in-time-debugging-operation-attempted-is-not-supported
источник
В моем случае устранение проблемы со встроенным экземпляром ASP.NET Development Server через системный трей.
источник
Странные и сумасшедшие вещи ... но отладка на сервере и другой пользователь оставили IIS Express работающим на своем сеансе. Мне пришлось выйти из системы этого пользователя, чтобы убить его запущенные процессы IIS Express. Это, кажется, решило проблему!
Обновить
Потратив более 1 часа в погоне за тем, что вызывало проблему ... вот в чем дело: мне несколько удалось набрать
s
внутри<appSettings>
разделWeb.config
. Visual Studio пыталась предупредить меня вError List
окне с предупреждением . Признаюсь, я редко проверяю предупреждения ... должен начать проверять это с этого момента. : D Как только я удалил нарушителя,s
точка останова попала вApplication_Start
.источник
У меня была эта проблема при попытке инициализации log4net. Я решил просто сделать статический конструктор для Global.asax
источник
Проблема в основном возникает при попытке переместить файл Global.asax в другой каталог решения. Снова переместите файл Global.asax в папку по умолчанию. Это будет работать как ожидалось.
источник
Ни одно из описанных выше решений не помогло мне. Однако переустановка пакета
использование Nuget GUI (не слишком хороший) обход
источник