Как отладить метод, который я настроил с использованием атрибута сборки preapplicationstartmethod attribute во время выполнения в IIS 7.5?

#visual-studio-2010 #debugging #iis-7

#visual-studio-2010 #отладка #iis-7

Вопрос:

Я объявил PreApplicationStartMethodAttribute на уровне сборки следующим образом:

 [assembly: PreApplicationStartMethod(typeof(MyApp.Global), "InitializeApplication")]
  

Смотрите Это объяснение для получения более подробной информации об этом.

Вот объявление InitializeApplication :

 public class Global : HttpApplication
{
    public static void InitializeApplication()
    {
        // Initialization code goes here...
    }
}
  

Я запускаю свое приложение в локальном экземпляре IIS 7.5 и хочу отладить свой InitializeApplication метод. Я установил для него точку останова, но она не попадает.

Я полагаю, что код выполняется при запуске пула приложений, что, насколько мне известно, происходит до того момента, когда я нажимаю клавишу F5 в Visual Studio.

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

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

Итак, вопрос в следующем: как я могу отладить PreApplicationStartMethodAttribute указанный метод?

Комментарии:

1. Вы пытались подключиться к локальному IIS или удаленному?

2. Я подключил локально. Я обновил вопрос, спасибо, что помогли мне сделать вопрос более конкретным.

3. Вы используете IIS Express или обычный IIS 7? Попробуйте оба для лучшего понимания проблемы и получения опыта

4. На первый взгляд, подключение к процессу IIS — это именно то, что вам нужно.

5. Спасибо! Похоже, что при использовании IIS 7.5 Express метод инициализации запускается отладчиком при запуске после перестройки. Если вы опубликуете свой ответ в качестве ответа, я приму его как таковой.

Ответ №1:

Попробуйте использовать IIS Express локально, возможно, будет проще подключить отладчик к этому процессу.

Ответ №2:

Вы можете поместить System.Diagnostics.Debugger.Break(); в свой код инициализации. Когда отладчик подключен, эта точка останова всегда будет достигнута.

Если вы хотите подключиться к процессу, запущенному в IIS, используйте «Присоединить к процессу» (Ctrl Alt p) и найдите w3wp.exe , вы должны быть в состоянии идентифицировать правильный процесс по имени пользователя (apppool user) и типу (managed). Если процесса нет в списке, убедитесь, что вы установили флажок «Показывать процессы от всех пользователей». Конечно, процесс должен быть запущен, поэтому вам может потребоваться сначала отправить запрос.

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