nopSolutions/nopCommerce · error · Exception

Azure end point for Blob is not specified

Error message

Azure end point for Blob is not specified

What it means

Thrown by AzureThumbService.Init when AzureBlobSettings.EndPoint is null or empty. It is the third sequential config check; the endpoint is used to build blob URLs (Trim().ToLowerInvariant().TrimEnd('/')).

Source

Thrown at src/Plugins/Nop.Plugin.Misc.AzureBlob/Services/AzureThumbService.cs:63

    #region Utilities

    /// <summary>
    /// Initialize cloud container
    /// </summary>
    private void Init()
    {
        if (_isInitialized)
            return;

        if (string.IsNullOrEmpty(_azureBlobSettings.ConnectionString))
            throw new Exception("Azure connection string for Blob is not specified");

        if (string.IsNullOrEmpty(_azureBlobSettings.ContainerName))
            throw new Exception("Azure container name for Blob is not specified");

        if (string.IsNullOrEmpty(_azureBlobSettings.EndPoint))
            throw new Exception("Azure end point for Blob is not specified");

        lock (_locker)
        {
            if (_isInitialized)
                return;

            _azureBlobStorageAppendContainerName = _azureBlobSettings.AppendContainerName;
            _azureBlobStorageConnectionString = _azureBlobSettings.ConnectionString;
            _azureBlobStorageContainerName = _azureBlobSettings.ContainerName.Trim().ToLowerInvariant();
            _azureBlobStorageEndPoint = _azureBlobSettings.EndPoint.Trim().ToLowerInvariant().TrimEnd('/');

            _blobServiceClient = new BlobServiceClient(_azureBlobStorageConnectionString);
            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(_azureBlobStorageContainerName);

            _blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.Blob).Wait();

            _isInitialized = true;
        }

View on GitHub (pinned to 64bdf2ff08)

Solutions

  1. Provide the blob endpoint/base URL in the plugin configuration (e.g. https://<account>.blob.core.windows.net or your CDN domain) and save.
  2. Save the setting for the correct store scope.
  3. Ensure the value is non-empty after trim (not just whitespace).

Example fix

// before: EndPoint = ""
// after:
settings.EndPoint = "https://mystore.blob.core.windows.net";
await _settingService.SaveSettingAsync(settings, storeScope);
Defensive patterns

Strategy: validation

Validate before calling

if (string.IsNullOrEmpty(_azureBlobSettings.EndPoint))
    throw new InvalidOperationException("Configure the Azure Blob endpoint before use.");

Type guard

static bool HasEndPoint(AzureBlobSettings s) => !string.IsNullOrWhiteSpace(s.EndPoint);

Try / catch

try { _azureThumbService.GetThumbUrl(...); }
catch (Exception ex) when (ex.Message.Contains("end point for Blob"))
{ logger.Error("Azure Blob endpoint missing.", ex); }

Prevention

When it happens

Trigger: The Azure Blob plugin is configured with connection string and container but the custom endpoint (CDN or custom domain) field is blank. Init runs on first media operation.

Common situations: Admin left the endpoint blank; using the default endpoint but the field is required; settings saved to the wrong store scope; migrating configs and dropping the endpoint value.

Related errors


AI-assisted analysis of nopSolutions/nopCommerce@64bdf2ff08 (2026-08-13). Data as JSON: /api/errors/f6d823ff9949ecd8. Report an issue: GitHub.