使用RestSharp 110.0.1与.NET6设置RestClient认证器遇只读错误
解决RestSharp 110.0.1中
RestClient.Authenticator只读的问题 在RestSharp 107及以上版本中,RestClient的Authenticator属性已改为只读,无法通过对象初始化器直接赋值,这就是你遇到错误的原因。官方文档的示例代码可能未及时适配新版本的API变更。
修改后的代码
只需要将Authenticator的配置移到RestClientOptions中即可解决问题,修改GetToken方法如下:
async Task<string> GetToken() { // 将Authenticator配置到RestClientOptions中 var options = new RestClientOptions(_baseUrl) { Authenticator = new HttpBasicAuthenticator(_clientId, _clientSecret) }; using var client = new RestClient(options); var request = new RestRequest("oauth2/token") .AddParameter("grant_type", "client_credentials"); var response = await client.PostAsync<TokenResponse>(request); return $"{response!.TokenType} {response!.AccessToken}"; }
原理说明
RestSharp从107版本开始重构了客户端配置逻辑,所有与客户端相关的配置(包括认证器)都统一通过RestClientOptions进行设置,不再允许直接修改RestClient的属性,这样可以确保客户端实例的配置在创建时就固定,避免运行时变更带来的潜在问题。
内容的提问来源于stack exchange,提问作者SpookyBooky
相关产品推荐
相关产品推荐

