Функция Azure запускается в докере, но отладка не работает

Я создаю пример проекта с функциями Azure и Dapr и работаю в Linux Docker. Я использую docker compose и файл yml для запуска проекта. Но проблем немного. Я использую VS 2022 и код VS.

Сначала в VS 2022 он не запустится для проекта Azure Function. Он работает для asp.net Web и API. Для проекта Azure Function будет получена ошибка, так как проект не поддерживает работу в Linux. Затем я открываю в коде VS команду «docker compose up». Проекты запускаются нормально, но на него не удалось прикрепить отладчик.

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

Затем я попробовал в коде VS, в контейнере я смонтировал vsdbg в /remote_debugger Вот мой файл docker-compose.yml

      daprfunctester:
image: ${DOCKER_REGISTRY-}daprfunctester
container_name: "daprfunctester"
build:
  context: .
  dockerfile: DaprFuncTester/Dockerfile
environment:
  - DAPR_HTTP_PORT=3500
  - AzureWebJobsStorage
  - DOTNET_USE_POLLING_FILE_WATCHER
  - NUGET_FALLBACK_PACKAGES
  - NUGET_PACKAGES
  - ASPNETCORE_CONTENTROOT=/azure-functions-host
  - FUNCTIONS_WORKER_RUNTIME=dotnet
  - DOTNET_RUNNING_IN_CONTAINER=true
  - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
  - F:\Work\Moneycorp\CodeForFun\DurableForFun:/src
  - C:\Users\winso\vsdbg\vs2017u5:/remote_debugger:rw
  - C:\Users\winso\AppData\Local\AzureFunctionsTools\Containers_2167102\Releases\4.20.0\linuxCLI:/functions_debugging_cli:ro
  - ~/.nuget/packages:/root/.nuget/packages:ro
  - C:\Users\winso\.nuget\packages:/root/.nuget/fallbackpackages:ro     
networks:
  - hello-dapr

И файл launch.json

              {
        "name": "Docker .NET Core Attach (Preview)",
        "type": "docker",
        "request": "attach",
        "platform": "netCore",
        "netCore": {
            "debuggerPath": "/remote_debugger/vsdbg",
            //"appProject": "${workspaceFolder}/DaprFuncTester/DaprFuncTester.csproj",
            //"enableDebugging": true
        },
        "sourceFileMap": {
            "/home/site/wwwroot": "${workspaceFolder}/DaprFuncTester"
        },
        "processName": "Microsoft.Azure.WebJobs.Script.WebHost"
        //"processId":"${command:pickProcess}"
    },

Когда я запускаю отладчик F5, он работает, и если я пытаюсь установить точку останова, он также останавливает поток из-за точки останова, но он не взаимодействует с кодом, он не указывает и не имеет указателя на строку кода. Если нажать F10 "перешагнуть", выскочит ошибка "Не удалось выполнить шаг". Я не могу проверить значения переменных. Если я проверю .Net ThreadPool Worker, у него появится сообщение «Ошибка обработки запроса stackTrace».

У меня вопрос: судя по сравнению с кодом, отладчик останавливается в точке останова, почему мой код не взаимодействует? что-то не так с настройками в моих файлах launch.json или docker compose?

0 ответов

Другие вопросы по тегам