{"record":{"id":"c7564531fe9d7a09","repo":"cefsharp/CefSharp","slug":"urlrequestclient","errorCode":null,"errorMessage":"urlRequestClient","messagePattern":"urlRequestClient","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"CefSharp.Core/UrlRequest.cs","lineNumber":50,"sourceCode":"        /// Create a new URL request that is not associated with a specific browser or frame.\n        /// Use <see cref=\"IFrame.CreateUrlRequest(IRequest, IUrlRequestClient)\"/> instead if you want the\n        /// request to have this association, in which case it may be handled differently.\n        /// For requests originating from the browser process: It may be intercepted by the client via <see cref=\"IResourceRequestHandler\"/>  or <see cref=\"ISchemeHandlerFactory\"/>.\n        /// POST data may only contain only a single element of type PDE_TYPE_FILE or PDE_TYPE_BYTES.\n        /// </summary>\n        /// <param name=\"request\">request</param>\n        /// <param name=\"urlRequestClient\">url request client</param>\n        /// <param name=\"requestContext\">request context associated with this requets.</param>\n        public UrlRequest(IRequest request, IUrlRequestClient urlRequestClient, IRequestContext requestContext)\n        {\n            if (request == null)\n            {\n                throw new ArgumentNullException(nameof(request));\n            }\n\n            if (urlRequestClient == null)\n            {\n                throw new ArgumentNullException(nameof(urlRequestClient));\n            }\n\n            urlRequest = new CefSharp.Core.UrlRequest(request.UnWrap(), urlRequestClient, requestContext?.UnWrap());\n        }\n\n        /// <inheritdoc/>\n        public bool ResponseWasCached\n        {\n            get { return urlRequest.ResponseWasCached; }\n        }\n\n        /// <inheritdoc/>\n        public IResponse Response\n        {\n            get { return urlRequest.Response; }\n        }\n\n        /// <inheritdoc/>","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/cefsharp/CefSharp/blob/16bc6e0711a4945be17e8bc4bc7ccf9469f3fdec/CefSharp.Core/UrlRequest.cs#L32-L68","documentation":"Thrown by the UrlRequest constructor when the urlRequestClient parameter is null. The constructor wraps a managed request into the underlying CefSharp.Core.UrlRequest, and CEF requires a non-null client callback to receive response headers, data, and completion events. Without it there is no way to deliver the asynchronous response back to the caller, so the constructor rejects it immediately.","triggerScenarios":"Calling `new UrlRequest(request, null)` or `new UrlRequest(request, null, requestContext)` directly. Also triggered when a factory method or DI container passes null because IUrlRequestClient was never registered.","commonSituations":"Developers building out-of-browser URL requests (no associated IFrame) who forget to implement/assign the IUrlRequestClient. Migrating from older CefSharp APIs where the callback was optional or used a different signature (e.g. old IUrlRequestCallback). Passing an uninitialized field that was expected to be set in a lifecycle hook that ran later than expected.","solutions":["Provide a non-null IUrlRequestClient implementation — the constructor requires it; implement OnResponseHeadersReceived/OnReadData/OnRequestComplete.","Prefer IFrame.CreateUrlRequest(request, client) if your request is associated with a frame — that path has frame-level validation.","If using DI, register IUrlRequestClient (or your custom factory) before constructing UrlRequest."],"exampleFix":"// before\nvar req = new UrlRequest(request, null);\n\n// after\nvar client = new MyUrlRequestClient(); // implements IUrlRequestClient\nvar req = new UrlRequest(request, client);","handlingStrategy":"validation","validationCode":"if (urlRequestClient == null) throw new ArgumentNullException(nameof(urlRequestClient));\nvar req = new UrlRequest(request, urlRequestClient, requestContext);","typeGuard":"public static bool IsValidUrlRequestClient(IUrlRequestClient c) => c != null;","tryCatchPattern":"try { var r = new UrlRequest(request, client, ctx); }\ncatch (ArgumentNullException ex) when (ex.ParamName == \"urlRequestClient\") { /* assign client */ }","preventionTips":["Always construct IUrlRequestClient before the UrlRequest.","Use IFrame.CreateUrlRequest when a frame is available for better validation.","Register IUrlRequestClient in DI so it is never null."],"tags":["argument-null","url-request","cefscore-core","constructor"],"backgroundTag":null,"analyzedSha":"16bc6e0711a4945be17e8bc4bc7ccf9469f3fdec","analyzedAt":"2026-08-13T19:57:05.828Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}