我正在尝试重新设计我的Azure API客户端,使用单例
我使用的是Microsoft.Rest.ClientRuntime.2.3.12版本。
我看到Microsoft.Rest.ServiceClient有一个构造函数可以重用
这是我如何调用API客户端。
HttpClient
来为ServiceClient<T>
服务,因为多个来源建议这样做(出于性能考虑,也是Microsoft.Rest.ServiceClient
“通常情况下”使用的HttpClient
的建议方法)。我使用的是Microsoft.Rest.ClientRuntime.2.3.12版本。
我看到Microsoft.Rest.ServiceClient有一个构造函数可以重用
HttpClient
。protected ServiceClient(HttpClient httpClient, bool disposeHttpClient = true);
这是我API客户端的构造函数,目的是为了重复使用HttpClient,但是当它被调用时,会出现System.MissingMethodException
错误:Void Microsoft.Rest.ServiceClient`1..ctor(System.Net.Http.HttpClient, Boolean)
public MyAPIclient(ServiceClientCredentials credentials, HttpClient client)
: base(client, disposeHttpClient: false)
{
this._baseUri = new Uri("https://...");
if (credentials == null)
{
throw new ArgumentNullException("credentials");
}
this.Credentials = credentials;
Credentials?.InitializeServiceClient(this);
}
这是我如何调用API客户端。
using (var apiClient = new MyAPIclient(credentials, HttpClientSingleton.Client))
//I get Method not found 'Void Microsoft.Rest.ServiceClient`1..ctor(System.Net.Http.HttpClient, Boolean)'
{
//some api call
}
这是我如何实例化我的http客户端单例
public static class HttpClientSingleton
{
public static readonly HttpClient Client = new HttpClient() { Timeout = TimeSpan.FromMinutes(30) };
}
为什么会出现这个异常(我看到ServiceClient
有ctor(httpClient, bool)
)?
如何解决这个问题?
HttpClient
的版本是什么? - MT-FreeHK