{"record":{"id":"d706921bc302a6b5","repo":"nopSolutions/nopCommerce","slug":"azure-connection-string-for-blob-is-not-specified","errorCode":null,"errorMessage":"Azure connection string for Blob is not specified","messagePattern":"Azure connection string for Blob is not specified","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/Plugins/Nop.Plugin.Misc.AzureBlob/Services/AzureThumbService.cs","lineNumber":57,"sourceCode":"        _azureBlobSettings = azureBlobSettings;\n        _fileProvider = fileProvider;\n        _staticCacheManager = staticCacheManager;\n    }\n\n    #endregion\n\n    #region Utilities\n\n    /// <summary>\n    /// Initialize cloud container\n    /// </summary>\n    private void Init()\n    {\n        if (_isInitialized)\n            return;\n\n        if (string.IsNullOrEmpty(_azureBlobSettings.ConnectionString))\n            throw new Exception(\"Azure connection string for Blob is not specified\");\n\n        if (string.IsNullOrEmpty(_azureBlobSettings.ContainerName))\n            throw new Exception(\"Azure container name for Blob is not specified\");\n\n        if (string.IsNullOrEmpty(_azureBlobSettings.EndPoint))\n            throw new Exception(\"Azure end point for Blob is not specified\");\n\n        lock (_locker)\n        {\n            if (_isInitialized)\n                return;\n\n            _azureBlobStorageAppendContainerName = _azureBlobSettings.AppendContainerName;\n            _azureBlobStorageConnectionString = _azureBlobSettings.ConnectionString;\n            _azureBlobStorageContainerName = _azureBlobSettings.ContainerName.Trim().ToLowerInvariant();\n            _azureBlobStorageEndPoint = _azureBlobSettings.EndPoint.Trim().ToLowerInvariant().TrimEnd('/');\n\n            _blobServiceClient = new BlobServiceClient(_azureBlobStorageConnectionString);","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/nopSolutions/nopCommerce/blob/64bdf2ff08c8b39e65717bcf974fb43dc2ef68f2/src/Plugins/Nop.Plugin.Misc.AzureBlob/Services/AzureThumbService.cs#L39-L75","documentation":"Thrown by AzureThumbService.Init when AzureBlobSettings.ConnectionString is null or empty. Init is the lazy initializer for the blob container; it checks configuration before creating BlobServiceClient. Nothing is initialized when this throws.","triggerScenarios":"The Azure Blob plugin is installed/enabled but no connection string was saved in its configuration. Init runs on first use of the thumb/picture service backed by Azure.","commonSituations":"Plugin enabled without configuration; connection string cleared; settings saved against a different store scope so the active store sees an empty value.","solutions":["Open the Azure Blob plugin configuration and paste a valid storage account connection string (from Azure Portal > Storage account > Access keys), then save.","Ensure the setting is saved for the correct store scope in multi-store setups.","Verify the connection string is not whitespace-only (it must pass !string.IsNullOrEmpty)."],"exampleFix":"// before: ConnectionString = \"\"\n// after (Azure Portal value):\nsettings.ConnectionString = \"DefaultEndpointsProtocol=https;AccountName=mystore;AccountKey=<key>;EndpointSuffix=core.windows.net\";\nawait _settingService.SaveSettingAsync(settings, storeScope);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(_azureBlobSettings.ConnectionString))\n    throw new InvalidOperationException(\"Configure the Azure Blob connection string before use.\");","typeGuard":"static bool IsAzureBlobConfigured(AzureBlobSettings s) =>\n    !string.IsNullOrEmpty(s.ConnectionString)\n    && !string.IsNullOrEmpty(s.ContainerName)\n    && !string.IsNullOrEmpty(s.EndPoint);","tryCatchPattern":"try { _azureThumbService.GetThumbUrl(...); }\ncatch (Exception ex) when (ex.Message.Contains(\"connection string for Blob\"))\n{ logger.Error(\"Azure Blob not configured: connection string missing.\", ex); }","preventionTips":["Block enabling the plugin until a connection string is saved.","Store the connection string as an app secret, not plaintext.","Add a configuration health check at startup."],"tags":["azure","plugins","blob-storage","config","secrets","media"],"backgroundTag":null,"analyzedSha":"64bdf2ff08c8b39e65717bcf974fb43dc2ef68f2","analyzedAt":"2026-08-13T21:19:38.062Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}