Nur in Azure: Der sichere SSL / TLS-Kanal konnte nicht erstellt werden.
Ich führe eine Anwendung auf dem Azure-Anwendungsstandard aus: 1 Kleiner Plan. Framework ist 4.6.1
Diese Anwendung ruft eine SSL-geschützte API auf. Das SSL wird von der StartCom Class 1 DV Server CA veröffentlicht. Mein lokaler Browser teilt mir mit, dass das Zertifikat gültig ist.
Wenn ich die Anwendung auf meinem lokalen Computer ausführe, funktioniert alles. Bei der Bereitstellung in Azure tritt jedoch ein Fehler auf:
System.Net.Http.HttpRequestException: Beim Senden der Anforderung ist ein Fehler aufgetreten. ---> System.Net.WebException: Die Anforderung wurde abgebrochen: SSL / TLS-Sicherheitskanal konnte nicht erstellt werden.
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar)
--- Ende der inneren Ausnahmestapelverfolgung ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task)
Der Code
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;
}
Wie Sie sehen, überspringe ich die Validierung des Zertifikats und füge die Sicherheitsprotokolle hinzu.
Die Anfrage schlägt jedoch immer noch fehl.
Hier ist die kaputte Antworthttp: //textuploader.com/5ers
Haben Sie eine Idee, wie Sie dieses Produkt in Azure zum Laufen bringen können?