Я пытаюсь отладить веб-службу (Windows XP SP3, VS 2008, ASP.NET 2, VB.NET).
По большей части, если рабочий процесс asp.net уже загружен, я могу запустить форму Windows, которая вызывает веб-службу, присоединиться к aspnet_wp.exe в Visual Studio, а затем выполнить отладку, сколько душе угодно, но поймать запуск приложения событие в global.asax - это боль.
Если я сброшу IIS, конечно, не будет процесса для подключения, пока не закончится событие запуска приложения.
Единственный способ, который я нашел для этого, - создать отдельную страницу aspx, установить ее как стартовую и запустить ее - тогда я могу остановиться на перерыве в событии запуска приложения, но необходимость поддерживать страницу вызывает неудобства. это, по сути, просто тестовая заглушка.
Есть идеи для чего-нибудь более аккуратного? Типа: «Присоединяйтесь к процессу, как только он начнется».
Еще лучше, конечно, было бы не подключать явно к aspnet_wp.exe, чтобы иметь возможность отлаживать веб-службу, но я тоже не нашел способа сделать это.
Спасибо за любые предложения.
@Darin .. Это мысль ... нет, не совсем, кроме общего предпочтения как можно более реалистичной тестовой среды и привычки. Я тоже выставляю веб-службу извне, но нет причин не использовать ее для тестирования. Я попробую, спасибо.





Попробуйте вставить это в событие запуска приложения, он должен каждый раз запускать ваш отладчик. Просто не забудьте вынуть его, когда закончите :-).
System.Diagnostics.Debugger.Launch()
Или еще лучше, в OnStart вашего WebService:
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
System.Diagnostics.Debugger.Launch()
End Sub
Обновление: добавление этого комментария к ответу, поскольку это хорошая идея:
Wrap this in #if DEBUG and it's a bit safer (won't end up slipping something so catastrophic into test/production environments). – sliderhouserules
Ну конечно запускает отладчик! Спасибо за это ... Я надеялся на что-то менее радикальное, но, надеюсь, мне не нужно будет слишком часто отлаживать событие App_Start, так что удаление этой строки не будет слишком сложной задачей.
Оберните это в #if DEBUG, и это будет немного безопаснее (не приведет к тому, что что-то столь катастрофическое попадет в среду тестирования / производства).
Есть ли у вас какие-либо причины не использовать встроенный веб-сервер VS2008 (Cassini) для отладки веб-службы? Я думаю, что для этой цели это более естественный выбор, чем IIS.