Skip to content

RestClientOptions.UserAgent missing from requests with useClientFactory: true #2389

@pdupont1

Description

@pdupont1

Describe the bug

When useClientFactory: true is passed to the RestClient constructor and UserAgent is set via RestClientOptions.UserAgent, the User-Agent header is missing from outgoing requests for every RestClient instance after the first one sharing the same BaseUrl.

When disabling the client factory the User-Agent is back on every request.

To Reproduce

var options = new RestClientOptions
 {
     BaseUrl = new Uri("https://httpbin.org"),
     UserAgent = "MyApp/1.0"
 };

//1st request
var client1 = new RestClient(options, useClientFactory: true);
_ = await client1.GetAsync(new RestRequest("/get"));

// 2nd request
var client2 = new RestClient(options, useClientFactory: true);
_ = await client2.GetAsync(new RestRequest("/get"));

1st raw request from fiddler

GET https://httpbin.org/get HTTP/1.1
Host: httpbin.org
User-Agent: MyApp/1.0
Accept: application/json, text/json, text/x-json, text/javascript, application/xml, text/xml
Accept-Encoding: gzip, deflate, br

2nd raw request from fiddler

GET https://httpbin.org/get HTTP/1.1
Host: httpbin.org
Accept: application/json, text/json, text/x-json, text/javascript, application/xml, text/xml
Accept-Encoding: gzip, deflate, br

Expected behavior

User-Agent should appear on every request regardless of how many RestClient instances are created for the same BaseUrl.

Desktop:

  • OS: Windows 10.0.26200.8457
  • .NET version: .NET 10.0.8
  • Version 114.0.0

Additional context

I suspect that ConfigureDefaultParameters should be called regardless of the client instance coming from cache or not.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions