.net RestSharp Response通常只允许对每个套接字地址(协议/网络地址/端口)使用一次
我正在使用RestSharp与.Net核心Web API进行通信。客户端和服务器都是我写的 我有一套服务,所有这些服务都继承了一个基类,该基类包含一个通过RestClient执行请求的异步方法。下面是创建RestClient的基类中的方法.net RestSharp Response通常只允许对每个套接字地址(协议/网络地址/端口)使用一次,.net,sockets,core,restsharp,.net,Sockets,Core,Restsharp,我正在使用RestSharp与.Net核心Web API进行通信。客户端和服务器都是我写的 我有一套服务,所有这些服务都继承了一个基类,该基类包含一个通过RestClient执行请求的异步方法。下面是创建RestClient的基类中的方法 private async Task<ServiceResponse> RequestAsync(ServiceRequest request) { try { var res
private async Task<ServiceResponse> RequestAsync(ServiceRequest request)
{
try
{
var result = await new RestClient(_digiCore.Config.GetApiBaseUrl()).ExecuteTaskAsync(request.Request, request.CancellationTokenSource.Token);
switch (result.StatusCode)
{
case HttpStatusCode.OK:
case HttpStatusCode.Created:
case HttpStatusCode.NoContent:
return new ServiceResponse
{
Code = ServiceResponseCode.Success,
Content = result.Content
};
// User wasn't authenticated for this one - better luck next time!
case HttpStatusCode.Unauthorized:
Logger.LogError($"Unauthorized {request.Method.ToString()}/{request.Path}");
default:
Logger.LogError($"An error occurred {request.Method.ToString()}/{request.Path}");
}
}
catch (Exception e)
{
Logger.LogError($"A Rest Client error occurred {request.Method.ToString()}/{request.Path}");
}
}
我相信这是由于疲劳所致。API和客户端都作为应用程序服务在Azure中运行
我尝试将RestClient作为单例服务的一部分,并检查它是否只创建了一次,但这并没有缓解问题
我还研究了在我的启动类的启动函数中将DefaultConnectionLimit从默认值(2)设置为12,但是我也没有看到任何改进
我真的很努力想看看我能如何改进这个。。。任何帮助都将不胜感激找出原因 RestSharp目前似乎存在一个问题,即套接字连接不会立即关闭,而是保持在等待状态 此问题目前已记录在RestSharp网站上-> 我已经选择切换到使用HttpClient,并且运行完全相同的负载测试,我没有任何问题 下面是从Azure截图,显示了两个负载测试之间的差异
Only one usage of each socket address (protocol/network address/port) is normally permitted