Tonight continued some development to include Salesforce authentication and authorization into a side project. At this point, I have persisted the access and refresh tokens. I want to use a timer based Azure Function to get the refresh token and update the access tokens as needed for several different OAuth implementations.
The immediate issue I ran into was how to debug these functions locally. I am using the Azure Functions Core Tools v4 and a .NET 5.0 isolated Azure Function.
Since the Functions are running in a isolated process, first I had to attach to the process to debug. In order to debug locally, use the following to start the process and enable debugging.
func host start --dotnet-isolated-debug --verbose
Once the process is running, I can attach to the process using the following configuration in launch.json
from Visual Studio Code.
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}
And then attach the the process by name or by Id as in the image below.
Once attached, to test a Timer based Function, you can manually run a non HTTP-triggered function by making a POST call using a specific URL format. The linked documentation is great for a released or published Function, but locally you need to call this a little differently.
To invoke the Function locally, make a POST call to the function URL with admin/functions/[function-name]
with a Content-Type of application/json and and empty body ({}). I used Postman to initiate my call, but using curl would be similar to the following:
curl http://127.0.0.1:7071/admin/functions/timertrigger -i -X POST -H "Content-Type:application/json" -d "{}"
This will invoke the a non-HTTP-trigger and you should hit your breakpoint to debug.