Dapr + .NET Core實戰(九)本地調試


4小時Dapr+.NET 5+K8S 的實戰  https://ke.qq.com/course/4000292?tuin=1271860f

Dapr進階虛擬機集群實戰(非K8S) https://ke.qq.com/course/4002149?tuin=1271860f

                   

前幾節開發Dapr應用程序時,我們使用 dapr cli 來啟動dapr服務,就像這樣:

dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll

如果你想要通過dapr調試服務呢?在這里使用 dapr 運行時(daprd) 來幫助實現這一點。具體原理就是先從命令行中運行符合正確參數的 daprd,然后啟動您的代碼並附加調試器。

1.配置launch.json

vscode打開項目,並創建launch.json

 修改launch.json的preLaunchTask,自定義名字,preLaunchTask將引用在 tasks.json 文件中定義的任務。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Frontend-.NET Core Launch (web)",
            "type": "coreclr",
            "request": "launch",
            //"preLaunchTask": "build",
            "preLaunchTask": "daprd-frontend", "program": "${workspaceFolder}/FrontEnd/bin/Debug/net5.0/FrontEnd.dll",
            "args": [],
            "cwd": "${workspaceFolder}/FrontEnd",
            "stopAtEntry": false,
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach"
        }
    ]
}

2.配置task.json

需要在task.json文件中定義一個 daprd task和問題匹配器(problem matcher)。 這里有兩個通過上述 preLaunchTask 成員引用。 在 dpred -frontend task下,還有一個dependsOn成員,它引用build任務,以確保最新的代碼正在運行/調試。 用了 problemMatcher,這樣當 daprd 進程啟動和運行時,VSCode 就能夠知道。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/FrontEnd/FrontEnd.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/FrontEnd/FrontEnd.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "${workspaceFolder}/FrontEnd/FrontEnd.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        { "label": "daprd-frontend", "command": "daprd", "args": [ "-app-id", "frontend", "-app-port", "5001", "-dapr-http-port", "3501", "-placement-host-address", "localhost:6050", "-components-path", "C:\\Users\\chesterychen\\.dapr\\components" ], "isBackground": true, "problemMatcher": { "pattern": [ { "regexp": ".", "file": 1, "location": 2, "message": 3 } ], "background": { "beginsPattern": "^.*starting Dapr Runtime.*", "endsPattern": "^.*waiting on port.*" } }, "dependsOn": "build" },
    ]
}

因為沒有使用 dapr run* cli 命令, 所以運行 daprd list 命令將不會顯示當前正在運行的應用列表。

3.調試

在StateController.GetAsync中新增斷點,運行並調用http://192.168.43.94:3501/v1.0/invoke/frontend/method/State。

 

4.不用vscode調試

cmd運行以下命令,監聽5001端口

daprd -dapr-http-port 3501 -app-port 5001  -app-id frontend -placement-host-address localhost:6050 -components-path C:\\Users\\chesterychen\\.dapr\\components

然后直接vs運行項目,即可調試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM