{"record":{"id":"90ccb1ae8a3c5cc3","repo":"cefsharp/CefSharp","slug":"settings","errorCode":null,"errorMessage":"settings","messagePattern":"settings","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"CefSharp.Core/RequestContext.cs","lineNumber":66,"sourceCode":"            requestContext = new CefSharp.Core.RequestContext(otherRequestContext, requestContextHandler);\n        }\n\n        /// <inheritdoc/>\n        public RequestContext(IRequestContextHandler requestContextHandler)\n        {\n            if (requestContextHandler == null)\n            {\n                throw new ArgumentNullException(nameof(requestContextHandler));\n            }\n            requestContext = new CefSharp.Core.RequestContext(requestContextHandler);\n        }\n\n        /// <inheritdoc/>\n        public RequestContext(RequestContextSettings settings)\n        {\n            if (settings == null)\n            {\n                throw new ArgumentNullException(nameof(settings));\n            }\n            requestContext = new CefSharp.Core.RequestContext(settings.settings);\n        }\n\n        /// <inheritdoc/>\n        public RequestContext(RequestContextSettings settings, IRequestContextHandler requestContextHandler)\n        {\n            if (settings == null)\n            {\n                throw new ArgumentNullException(nameof(settings));\n            }\n\n            if (requestContextHandler == null)\n            {\n                throw new ArgumentNullException(nameof(requestContextHandler));\n            }\n\n            requestContext = new CefSharp.Core.RequestContext(settings.settings, requestContextHandler);","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/cefsharp/CefSharp/blob/16bc6e0711a4945be17e8bc4bc7ccf9469f3fdec/CefSharp.Core/RequestContext.cs#L48-L84","documentation":"ArgumentNullException(nameof(settings)) from the RequestContext(RequestContextSettings settings) constructor. This overload builds a context from explicit settings (cache path, preferences, etc.); the settings object must be non-null. The inner field settings.settings is then passed to the core constructor.","triggerScenarios":"Calling new RequestContext(null) where the overload resolves to the RequestContextSettings overload; passing a RequestContextSettings built by a builder that returned null; config deserialisation yielding null.","commonSituations":"Overload-resolution ambiguity where null silently binds to the settings overload; a settings factory that returns null in the no-config branch; refactor dropping the settings construction.","solutions":["Construct a RequestContextSettings explicitly (e.g. via RequestContextBuilder.WithCachePath(...).Create() or new RequestContextSettings { ... }) before calling.","If overload resolution surprises you, cast or assign to a typed variable to make the target overload explicit.","Use the fluent RequestContextBuilder API which avoids null settings entirely.","Enable nullable reference types and annotate your settings factory return type."],"exampleFix":"// before\nvar ctx = new RequestContext(LoadSettings()); // returns null -> throws\n\n// after\nvar settings = LoadSettings() ?? new RequestContextSettings { CachePath = cacheDir };\nvar ctx = new RequestContext(settings);","handlingStrategy":"validation","validationCode":"var settings = LoadSettings() ?? new RequestContextSettings { CachePath = cacheDir };\nvar ctx = new RequestContext(settings);","typeGuard":"public static bool HasSettings(RequestContextSettings s) => s != null;","tryCatchPattern":"try { return new RequestContext(settings); }\ncatch (ArgumentNullException ex) when (ex.ParamName == \"settings\")\n{ return new RequestContext(new RequestContextSettings()); }","preventionTips":["Use RequestContextBuilder.WithCachePath(...) which never produces null settings","Assign settings to a typed variable to make overload resolution explicit","Enable nullable reference types"],"tags":["csharp","cefsharp","request-context","argument-null","validation","settings"],"backgroundTag":null,"analyzedSha":"16bc6e0711a4945be17e8bc4bc7ccf9469f3fdec","analyzedAt":"2026-08-13T19:57:05.828Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}