{"record":{"id":"2013585a177d86ce","repo":"dotnetcore/CAP","slug":"value-cannot-be-null-parameter-connectionstring","errorCode":null,"errorMessage":"Value cannot be null. (Parameter 'connectionString')","messagePattern":"Value cannot be null\\. \\(Parameter 'connectionString'\\)","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/DotNetCore.CAP.AzureServiceBus/CAP.Options.Extensions.cs","lineNumber":19,"sourceCode":"﻿// Copyright (c) .NET Core Community. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nusing System;\nusing DotNetCore.CAP;\n\n// ReSharper disable once CheckNamespace\nnamespace Microsoft.Extensions.DependencyInjection;\n\npublic static class CapOptionsExtensions\n{\n    /// <summary>\n    /// Configuration to use Azure Service Bus in CAP.\n    /// </summary>\n    /// <param name=\"options\">CAP configuration options</param>\n    /// <param name=\"connectionString\">Connection string for namespace or the entity.</param>\n    public static CapOptions UseAzureServiceBus(this CapOptions options, string connectionString)\n    {\n        if (connectionString == null) throw new ArgumentNullException(nameof(connectionString));\n\n        return options.UseAzureServiceBus(opt => { opt.ConnectionString = connectionString; });\n    }\n\n    /// <summary>\n    /// Configuration to use Azure Service Bus in CAP.\n    /// </summary>\n    /// <param name=\"options\">CAP configuration options</param>\n    /// <param name=\"configure\">Provides programmatic configuration for the Azure Service Bus.</param>\n    public static CapOptions UseAzureServiceBus(this CapOptions options, Action<AzureServiceBusOptions> configure)\n    {\n        if (configure == null) throw new ArgumentNullException(nameof(configure));\n\n        options.RegisterExtension(new AzureServiceBusOptionsExtension(configure));\n\n        return options;\n    }\n}","sourceCodeStart":1,"sourceCodeEnd":37,"githubUrl":"https://github.com/dotnetcore/CAP/blob/e52b8508e54cdb7a9ce7f9fec03d9ea8ad2710fb/src/DotNetCore.CAP.AzureServiceBus/CAP.Options.Extensions.cs#L1-L37","documentation":"The string-based UseAzureServiceBus overload requires a connection string to configure the Service Bus transport. Passing a null string throws ArgumentNullException before any options extension is registered, since the transport cannot connect without it.","triggerScenarios":"Calling options.UseAzureServiceBus(null) — typically the connection string comes from configuration (appsettings/env var) that is missing, or Configuration[\"AzureServiceBus:ConnectionString\"] returned null.","commonSituations":"Missing AzureServiceBus connection string in appsettings.json per environment; env var not set in CI/container; user-secrets not configured locally; key-vault reference that failed to resolve to a value.","solutions":["Provide a valid connection string: options.UseAzureServiceBus(\"Endpoint=sb://....servicebus.windows.net/;SharedAccessKeyName=...;SharedAccessKey=...\")","Throw a clear startup error if config is missing: var cs = config[\"ASB:CS\"] ?? throw new InvalidOperationException(\"Azure Service Bus connection string missing\")","Use the namespace-based overload UseAzureServiceBus(namespace, credential) when you have managed identity instead of a connection string","Verify appsettings/environment configuration is loaded before building the host"],"exampleFix":"// before\noptions.UseAzureServiceBus(Configuration[\"AzureServiceBus:ConnectionString\"]!); // null in prod\n// after\nvar cs = Configuration.GetConnectionString(\"AzureServiceBus\") ?? throw new InvalidOperationException(\"Azure Service Bus connection string is not configured.\");\noptions.UseAzureServiceBus(cs);","handlingStrategy":"validation","validationCode":"var cs = configuration[\"AzureServiceBus:ConnectionString\"]; if (string.IsNullOrWhiteSpace(cs)) throw new InvalidOperationException(\"Azure Service Bus connection string is required\");","typeGuard":"bool HasConnectionString(string? s) => !string.IsNullOrWhiteSpace(s);","tryCatchPattern":"try { options.UseAzureServiceBus(cs); } catch (ArgumentNullException ex) when (ex.ParamName == \"connectionString\") { logger.LogCritical(ex, \"ASB connection string missing\"); throw; }","preventionTips":["Validate required config keys at host startup (hostBuilder settings validation)","Keep connection strings in user-secrets/env vars per environment and assert presence in CI"],"tags":["dotnet","azure-service-bus","null-argument","connection-string","configuration"],"backgroundTag":"null-argument","analyzedSha":"e52b8508e54cdb7a9ce7f9fec03d9ea8ad2710fb","analyzedAt":"2026-09-14T14:46:34.677Z","contentChangedAt":"2026-09-14T14:46:34.677Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}