在本地很够正常执行,发布到服务器上就不行,于是我打印日志发现错误信息是:The SSL connection could not be established, see inner exception.
好像是SLL连接被拒绝了,检查代码发现我是请求了接口的,源码如下
public RESTResponseEntity RequestGet(string url)
{
RESTResponseEntity entity = new RESTResponseEntity();
try
{
HttpClient httpClient = new HttpClient();
if (timeout > 0)
{
httpClient.Timeout = TimeSpan.FromMilliseconds(timeout);
}
//httpClient.DefaultRequestHeaders.Add(HEAD_KEY, TOKEN_KEY_PREFIX + " " + tokenKey);
string strUrl = baseUrl + url;
HttpResponseMessage hrm = httpClient.GetAsync(strUrl).Result;
entity.StatusCode = Convert.ToInt32(hrm.StatusCode);
entity.Data = hrm.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
throw;
}
return entity;
}
后面查阅后,加如下代码可解决这个问题,改造后
public RESTResponseEntity RequestGet(string url)
{
RESTResponseEntity entity = new RESTResponseEntity();
try
{
var httpClientHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true
};
HttpClient httpClient = new HttpClient(httpClientHandler);
if (timeout > 0)
{
httpClient.Timeout = TimeSpan.FromMilliseconds(timeout);
}
//httpClient.DefaultRequestHeaders.Add(HEAD_KEY, TOKEN_KEY_PREFIX + " " + tokenKey);
string strUrl = baseUrl + url;
HttpResponseMessage hrm = httpClient.GetAsync(strUrl).Result;
entity.StatusCode = Convert.ToInt32(hrm.StatusCode);
entity.Data = hrm.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
throw;
}
return entity;
}