When using Azure Zip Deployment or another deployment option to Azure where the web files are cleared/cleaned on deployment can lead to ExamineX’s licensing system to not work when using Subscription licenses.

This is because ExamineX subscription licenses will renew a local license file every month which will result in a new file ExamineX-Azure-Umbraco.renewed.lic being created/updated. This is problematic if this file is cleared out when deployments occur.

To resolve this issue, a new abstraction called ILicenseFileLoader has been added to ExamineX with 2 shipped implementations: PhysicalFileLicenseFileLoader (default) and BlobStorageLicenseFileLoader. ExamineX will automatically enable the BlobStorageLicenseFileLoader implementation depending on the options configured.

To enable this, you can either use json configuration:

    "ExamineXBlobLicenseFileOptions": {
        "ConnectionString": "YOUR-CONNECTION-STRING-GOES-HERE",
        "ContainerName": "YOUR-CONTAINER-NAME",
        "ContainerRootPath": "OPTIONAL-ROOT-PATH-FOR-LICENSE-FILE",
        "Disabled": false // Optional, set to true to disable this even if the connection string is set
    }

Or if you are already using Umbraco’s blob storage media provider and want to re-use the connection string and/or container name, you can configure this in C#:

builder.Services.AddSingleton<IConfigureOptions<ExamineXBlobLicenseFileOptions>>(
    services => new ConfigureOptions<ExamineXBlobLicenseFileOptions>(options =>
    {
        // get the umbraco blob storage media options
        var azureBlobFileSystemOptions = services.GetRequiredService<AzureBlobFileSystemOptions>();

        // apply those values to the ExamineXBlobLicenseFileOptions
        options.ConnectionString = azureBlobFileSystemOptions.ConnectionString;
        options.ContainerName = azureBlobFileSystemOptions.ContainerName;
        options.ContainerRootPath = "ExamineX";
    }));

This will be shipped as part of ExamineX 4.1.0 but will first be released as a beta today!