{"record":{"id":"ce66ee40e7252859","repo":"HangfireIO/Hangfire","slug":"name","errorCode":null,"errorMessage":"name","messagePattern":"name","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Hangfire.Core/JobActivatorContext.cs","lineNumber":50,"sourceCode":"            if (cancellationToken == null) throw new ArgumentNullException(nameof(cancellationToken));\n\n            Connection = connection;\n            BackgroundJob = backgroundJob;\n            CancellationToken = cancellationToken;\n        }\n\n        [NotNull]\n        public BackgroundJob BackgroundJob { get; }\n\n        [NotNull]\n        public IJobCancellationToken CancellationToken { get; }\n\n        [NotNull]\n        public IStorageConnection Connection { get; }\n\n        public void SetJobParameter([NotNull] string name, object value)\n        {\n            if (String.IsNullOrEmpty(name)) throw new ArgumentNullException(nameof(name));\n\n            Connection.SetJobParameter(BackgroundJob.Id, name, SerializationHelper.Serialize(value, SerializationOption.User));\n        }\n\n        public T GetJobParameter<T>([NotNull] string name) => GetJobParameter<T>(name, allowStale: false);\n\n        public T GetJobParameter<T>([NotNull] string name, bool allowStale)\n        {\n            if (String.IsNullOrEmpty(name)) throw new ArgumentNullException(nameof(name));\n\n            try\n            {\n                string value;\n\n                if (allowStale && BackgroundJob.ParametersSnapshot != null)\n                {\n                    BackgroundJob.ParametersSnapshot.TryGetValue(name, out value);\n                }","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/HangfireIO/Hangfire/blob/c236dd0f930f831ec151e436e138ddc429a02a72/src/Hangfire.Core/JobActivatorContext.cs#L32-L68","documentation":"Thrown by JobActivatorContext.SetJobParameter when the name parameter is null or empty. Job parameters are keyed by name in the storage layer, so an empty name has no valid storage representation.","triggerScenarios":"Calling context.SetJobParameter(null, value) or context.SetJobParameter(\"\", value) from a server filter or job method that calls SetJobParameter with a dynamically-computed name that evaluated to null/empty.","commonSituations":"A job parameter name derived from a configuration value or expression that is null at runtime, or a copy-paste error where the name argument was omitted.","solutions":["Validate the parameter name is non-null and non-empty before calling SetJobParameter","Use a constant string for the parameter name to avoid dynamic null propagation","Add a guard: if (string.IsNullOrEmpty(name)) return; or throw a more descriptive error"],"exampleFix":"// before\ncontext.SetJobParameter(paramNameFromConfig, myValue);\n\n// after\nif (!string.IsNullOrEmpty(paramNameFromConfig))\n    context.SetJobParameter(paramNameFromConfig, myValue);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(name))\n    throw new ArgumentException(\"Parameter name must be non-empty.\", nameof(name));\ncontext.SetJobParameter(name, value);","typeGuard":"!string.IsNullOrEmpty(name)","tryCatchPattern":null,"preventionTips":["Use constant strings for parameter names to avoid null propagation","Validate dynamically-sourced parameter names before use","Define parameter name constants in a shared static class"],"tags":["null-argument","job-parameters","validation","hangfire"],"backgroundTag":null,"analyzedSha":"c236dd0f930f831ec151e436e138ddc429a02a72","analyzedAt":"2026-08-13T20:27:11.027Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}