【发布时间】:2016-11-18 11:25:25
【问题描述】:
我在 Azure 应用程序 Standard: 1 Small plan 上运行应用程序。框架是4.6.1
此应用程序正在调用 SSL 安全 API。 SSL 由 StartCom Class 1 DV Server CA 发布,我的本地浏览器告诉我证书有效。
如果我在本地机器上运行应用程序,一切正常。但是,当部署到天蓝色时,它会失败并出现以下错误:
System.Net.Http.HttpRequestException:发送时出错 请求。 ---> System.Net.WebException:请求被中止: 无法创建 SSL/TLS 安全通道。
在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
---内部异常堆栈跟踪结束---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)
代码:
public async Task<List<QutationOverview>> GetAll(string url, DateTime lastActionDate)
{
var result = string.Empty;
try
{
var userName = await _settingManager.GetSettingValueAsync("API.UserName");
var password = await _settingManager.GetSettingValueAsync("API.Password");
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
//Add date filter
//Always request qutations where the last action took place >= Yesterday
var requestUrl =
$"GetALL/?last_action_date={lastActionDate.AddDays(-1).ToString("yyyy-MM-dd")}&format=json";
var baseAddress = new Uri(url);
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{userName}:{password}"));
Logger.InfoFormat("GetAllQuotationsAsync for url {0}{1}", url, requestUrl);
using (var httpClient = new HttpClient {BaseAddress = baseAddress})
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
using (var response = await httpClient.GetAsync(requestUrl))
{
result = await response.Content.ReadAsStringAsync();
Logger.Info(result);
}
}
}
catch (Exception ex)
{
Logger.ErrorFormat("GetAllQuotationsAsync {0}: {1}", url, ex);
}
var data = JsonConvert.DeserializeObject<List<QutationOverview>>(result);
return data;
}
如您所见,我跳过了证书验证并添加了安全协议。
但是,请求仍然失败。
这是捕获的响应 http://textuploader.com/5ers0
你知道如何让这个在 Azure 上运行吗?
【问题讨论】:
-
textuploader.com 链接现已损坏。