Fix credential property order on HttpClientHandler#2353
Conversation
In .NET Core, HttpClientHandler.Credentials and UseDefaultCredentials share a backing field, so setting one overwrites the other. Previously, Credentials was set first (often null), then UseDefaultCredentials — which worked. But setting Credentials = CredentialCache.DefaultCredentials explicitly would get overwritten by UseDefaultCredentials = false. Now UseDefaultCredentials is set first, and Credentials is only set when non-null, so neither property can silently clobber the other. Fixes #2236 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Review Summary by QodoFix credential property order on HttpClientHandler
WalkthroughsDescription• Fix property assignment order for UseDefaultCredentials and Credentials on HttpClientHandler • In .NET Core, both properties share backing field — setting one overwrites the other • Now UseDefaultCredentials is set first, Credentials only set when non-null • Prevents CredentialCache.DefaultCredentials from being silently overwritten Diagramflowchart LR
A["HttpClientHandler<br/>property assignment"] -->|"old: Credentials first"| B["Credentials overwritten<br/>by UseDefaultCredentials"]
A -->|"new: UseDefaultCredentials first"| C["Credentials set only<br/>if non-null"]
C --> D["Both properties<br/>preserved correctly"]
File Changes1. src/RestSharp/RestClient.cs
|
Code Review by Qodo
1. Kerberos auth not verified
|
|
Deploying restsharp with
|
| Latest commit: |
48c27de
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://22f9be35.restsharp.pages.dev |
| Branch Preview URL: | https://fix-credential-handler-prope.restsharp.pages.dev |



Summary
UseDefaultCredentialsandCredentialsonHttpClientHandlerUseDefaultCredentialsis set first, andCredentialsis only set when non-nullCredentials = CredentialCache.DefaultCredentialsfrom being silently overwrittenFixes #2236
Test plan
Credentialsare not overwritten byUseDefaultCredentials = falseCredentialCache.DefaultCredentialsset explicitly are preservedUseDefaultCredentials = trueworks when no explicitCredentialsare set🤖 Generated with Claude Code