cefsharp/CefSharp · error · ArgumentNullException
other
Error message
other
What it means
ArgumentNullException("other") from RequestContextBuilder.WithSharedSettings(IRequestContext other). Sharing storage requires a source context; passing null is meaningless so it fails fast with parameter name 'other' (note: hardcoded string, not nameof). This check runs before ThrowExceptionIfCustomSettingSpecified.
Source
Thrown at CefSharp.Core/RequestContextBuilder.cs:202
{
_handler = new RequestContextHandler();
}
_handler.SetProxyOnContextInitialized(scheme, host, port);
return this;
}
/// <summary>
/// Shares storage with other RequestContext
/// </summary>
/// <param name="other">shares storage with this RequestContext</param>
/// <returns>Returns RequestContextBuilder instance</returns>
public RequestContextBuilder WithSharedSettings(IRequestContext other)
{
if (other == null)
{
throw new ArgumentNullException("other");
}
ThrowExceptionIfCustomSettingSpecified();
_otherContext = other;
return this;
}
}
}
View on GitHub (pinned to 16bc6e0711)
Solutions
- Ensure the source IRequestContext is created first (e.g. obtain it from an existing ChromiumWebbrowser.GetRequestContext() or Cef.GetGlobalRequestContext()).
- Guard the call: only invoke WithSharedSettings when the source is non-null, otherwise fall back to a custom-settings builder.
- Register IRequestContext as a non-null singleton in DI.
- Enable nullable reference types to catch the null statically.
Example fix
// before var ctx = RequestContext.Configure().WithSharedSettings(parent).Create(); // parent null -> throws // after var parent = existingBrowser?.GetRequestContext(); var builder = RequestContext.Configure(); if (parent != null) builder = builder.WithSharedSettings(parent); else builder = builder.WithCachePath(@"C:\cache"); var ctx = builder.Create();
Defensive patterns
Strategy: validation
Validate before calling
if (parent == null) throw new InvalidOperationException("No RequestContext to share.");
var ctx = RequestContext.Configure().WithSharedSettings(parent).Create(); Type guard
public static bool IsShareable(IRequestContext c) => c != null;
Try / catch
try { return RequestContext.Configure().WithSharedSettings(parent).Create(); }
catch (ArgumentNullException ex) when (ex.ParamName == "other")
{ /* fall back to custom settings */ return RequestContext.Configure().WithCachePath(cache).Create(); } Prevention
- Create/obtain the parent IRequestContext before sharing
- Register IRequestContext as a non-null singleton in DI
- Enable nullable reference types
When it happens
Trigger: Calling .WithSharedSettings(null) or .WithSharedSettings(unassignedVariable); passing an IRequestContext obtained from a browser that is not yet created; DI resolving IRequestContext to null.
Common situations: Trying to share the global context before it exists; factory returning null; overload/dispose race where the source context was just disposed.
Related errors
- otherRequestContext
- requestContextHandler
- settings
- A call to WithSharedSettings has already been made, it is no
- A call to WithCachePath has already been made, it's not poss
AI-assisted analysis of cefsharp/CefSharp@16bc6e0711 (2026-08-13).
Data as JSON: /api/errors/5b4b0520d16ac912.
Report an issue: GitHub.