DurableFunctionsMonitor.DotNetBackend 6.4.0

Requires NuGet 2.5 or higher.

dotnet add package DurableFunctionsMonitor.DotNetBackend --version 6.4.0
NuGet\Install-Package DurableFunctionsMonitor.DotNetBackend -Version 6.4.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DurableFunctionsMonitor.DotNetBackend" Version="6.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DurableFunctionsMonitor.DotNetBackend --version 6.4.0
#r "nuget: DurableFunctionsMonitor.DotNetBackend, 6.4.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DurableFunctionsMonitor.DotNetBackend as a Cake Addin
#addin nuget:?package=DurableFunctionsMonitor.DotNetBackend&version=6.4.0

// Install DurableFunctionsMonitor.DotNetBackend as a Cake Tool
#tool nuget:?package=DurableFunctionsMonitor.DotNetBackend&version=6.4.0

A monitoring/debugging UI tool for Azure Durable Functions, now also available as a NuGet package.

How to use

This package you can either Deploy to Azure or install into your own Azure Functions .Net Core project:

  • dotnet add package DurableFunctionsMonitor.DotNetBackend
  • Make sure AzureWebJobsStorage config setting is set correctly - it should point to a Storage where your Task Hub(s) reside.
  • Invoke DfmEndpoint.Setup(); method at your Function's startup. E.g. like this:
	[assembly: WebJobsStartup(typeof(StartupNs.Startup))]
	namespace StartupNs 
	{
		public class Startup : IWebJobsStartup
		{
			public void Configure(IWebJobsBuilder builder)
			{
				DfmEndpoint.Setup();
			}
		}
	}
  • Now DfMon endpoint should become available at your Function's root URL, which is typically https://my-func/api (or https://my-func/my-route-prefix, if you've customized routePrefix setting in your host.json) NOTE: by default it will overshadow all your existing HTTP-triggered functions. If you don't want that to happen, add DurableFunctionsMonitorRoutePrefix setting to your CSPROJ-file:

    image

    This will make DfMon be served from https://my-func/api/my-durable-functions-monitor.

IMPORTANT1: that endpoint still does all the AuthN/AuthZ logic, in the same way as standalone DfMon does. Which means that EasyAuth needs to be configured appropriately for your Function instance, just like for a standalone DfMon instance. If you do want to disable AuthN/AuthZ for that endpoint, either set DFM_NONCE config setting to i_sure_know_what_i_am_doing or call DfmEndpoint.Setup() method like this:

     DfmEndpoint.Setup(new DfmSettings { DisableAuthentication = true });

IMPORTANT2: a person who is able to access your DfMon endpoint can potentially also access all HTTP-triggered endpoints in your project. Make sure you configure AuthN/AuthZ properly.

IMPORTANT3: by default the endpoint exposes all Task Hubs in the underlying Storage account. Restrict the list of allowed Task Hubs either via DFM_HUB_NAME config setting (takes a comma-separated list) or via extensions.durableTask.hubName setting in your host.json.

Additional optional properties of DfmSettings class to further configure your DfMon endpoint are as follows:

  • DisableAuthentication - disables all authentication. Make sure you know what you're doing.
  • Mode - functional mode for this DfMon endpoint. Currently only DfmMode.Normal (default) and DfmMode.ReadOnly are supported.
  • AllowedUserNames - list of users, that are allowed to access this DfMon endpoint. You typically put emails into here. Once set, the incoming access token is expected to contain one of these names in its 'preferred_username' claim.
  • AllowedAppRoles - list of App Roles, that are allowed to access DurableFunctionsMonitor endpoint. Users/Groups then need to be assigned one of these roles via AAD Enterprise Applications->[your AAD app]->Users and Groups tab. Once set, the incoming access token is expected to contain one of these in its 'roles' claim.
  • AllowedReadOnlyAppRoles - list of App Roles, that are allowed read only access to the DurableFunctionsMonitor endpoint. Users/Groups then need to be assigned one of these roles via AAD Enterprise Applications->[your AAD app]->Users and Groups tab. Once set, the incoming access token is expected to contain one of these in its 'roles' claim.
  • CustomTemplatesFolderName - folder where to search for custom tab/html templates. Must be a part of your Functions project and be adjacent to your host.json file.
  • UserNameClaimName - name of the claim to be used for identifying the user (when matching against AllowedUserNames). By default, preferred_username claim is used for that, but this setting allows to specify some other custom claim.
  • RolesClaimName - name of the claim to be used for identifying user's app roles (when matching against AllowedAppRoles). By default, roles claim is used for that, but this setting allows to specify some other custom claim.

Alternatively you can call DfmEndpoint.Setup(); with no parameters and configure your DfMon endpoint with config settings (environment variables). The list of all supported config settings can be found here.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.1 is compatible.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
6.4.0 22,080 3/9/2024
6.4.0-beta4 114 3/3/2024
6.4.0-beta3 215 12/25/2023
6.4.0-beta2 432 12/7/2023
6.4.0-beta1 129 12/1/2023
6.3.0 114,613 7/7/2023
6.3.0-beta2 109 12/7/2023
6.2.1 25,134 4/26/2023
6.2.0 2,186 4/15/2023
6.1.1 27,823 2/13/2023
6.1.0 2,856 2/5/2023
6.0.0 24,352 11/21/2022
5.5.0 78,459 6/6/2022
5.4.1 4,660 5/16/2022
5.4.0 1,444 5/4/2022
5.3.0 5,787 3/23/2022
5.2.0 4,422 2/23/2022
5.1.1 17,623 11/8/2021
5.0.0 8,021 9/28/2021
4.8.2 4,460 9/19/2021
4.8.0 3,121 8/26/2021
4.7.1 2,799 8/3/2021
4.7.0 1,091 7/29/2021
4.6.0 2,158 6/27/2021
4.5.0 2,465 5/30/2021
4.4.0 2,532 4/21/2021
4.3.0 1,603 3/30/2021
4.2.0 2,002 2/28/2021
4.1.0 6,093 2/7/2021
4.0.0 1,224 1/14/2021
3.9.0 853 12/18/2020
3.8.0 532 12/4/2020
3.7.0 682 11/18/2020