Невозможно отладить код запуска на веб-сайте ASP.NET, работающем в Docker - PullRequest
0 голосов
/ 21 мая 2019

Я создал стандартный веб-сайт ASP.NET для .NET Framework и запускаю его в Docker с помощью Docker-compose.

При отладке веб-сайта ни одна из контрольных точек в «стартовом» коде веб-сайта не срабатывает.

Точки останова в контроллерах достигаются ожидаемым образом.

При запуске в IISExpress я сразу же достигаю точки останова в коде запуска.

Мне кажется, что VS 2019 не подключается к сайту вовремя, чтобы он достиг точек останова в коде запуска.

Я пробовал то же самое с ASPВеб-сайт .NET Core, и там сразу же возникают точки останова в методе Program.Main ().

Я попытался установить для Docker-compose "Launch Action" значение "Ничего не делать", чтобы избежать запуска сайтадо тех пор, пока я не сделаю запрос, но безуспешно.

Dockerfile:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .

Docker-compose.yml:

version: '3.4'

services:
  mydockerizedwebapp:
    image: ${DOCKER_REGISTRY-}mydockerizedwebapp
    container_name: mydockerizedwebapp
    build:
      context: .\MyDockerizedWebApp
      dockerfile: Dockerfile

Docker-compose.override.yml:

version: '3.4'

services:
  mydockerizedwebapp:
    ports:
      - "80"
networks:
  default:
    external:
      name: nat

Кто-нибудь знает, как вовремя подключить отладчик Visual Studio, чтобы я мог нажатьточки останова в коде запуска?

Редактировать:

Если при запуске веб-сайта возникает исключение и происходит его сбой, то следующий запрос к веб-серверу будет "перезагрузите его, и точки останова будут сбиты.Но почему они не бьют в первый раз?

1 Ответ

0 голосов
/ 21 мая 2019

Вы можете заставить ваше приложение ждать подключения отладчика:

#if Debug_Break
while (!Debugger.IsAttached)
{
    Thread.Sleep(500);
}
Debugger.Break();
#endif

Вы можете добавить конфигурацию Debug_Break или просто удалить #if. Поместите этот код в раздел автозагрузки.

Обратите внимание, что вам НЕ нужен этот код в ваших двоичных файлах выпуска по очевидным причинам.

...