Вызов веб-API https из Windows CE в Windows Azure больше не работает - PullRequest
0 голосов
/ 07 ноября 2018

У нас есть некоторый код C # (показанный ниже), работающий под .NET Compact Framework 3.5 устройства Windows CE, который работал (все еще работает в апреле 2018 года) и позволил нам сделать https вызов нашего веб-API, созданного ASP. NET Core 2.0 и размещен с веб-приложением Windows Azure. Однако в какой-то момент мы точно не знаем, когда (наверняка после августа 2018 года) тот же код из Windows CE больше не сможет совершать https-вызов веб-API https из Windows Azure. По некоторым причинам он начал возвращать исключение «Не удалось создать безопасный канал SSL / TLS».

Я полагаю, что некоторые изменения должны произойти со стороны веб-приложения Azure, которое не допускает вызов https с устройства CE, хотя он отлично работает для вызова https из браузеров ПК.

private void CallHTTPSWebApi()
{
string fullURI = "https://<our api url>";
req = (HttpWebRequest)WebRequest.Create(fullURI);
req.ContentType = "application/json;charset=utf-8";
req.Method = "GET";


    try
    {
    HttpWebResponse response = (HttpWebResponse)req.GetResponse();

    ResponseStatusCode = ((HttpWebResponse)response).StatusCode;

    using (StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream()))
    {
        string result = httpWebStreamReader.ReadToEnd();
        Console.WriteLine("Response Result = " + result);

    }
    response.Close();
    }
    catch (Exception ex)
    {
    Console.WriteLine("Exception : " + ex.Message);
    }

}

Я попытался реализовать наш собственный ICretificatePolicy, чтобы принять все проверки сертификатов из свойства ServicePointManager.CertificatePolicy, как показано ниже. Тем не менее, это все равно получить то же исключение.

public class AcceptAllCertificatePolicy : ICertificatePolicy
{
    public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate
    certificate, WebRequest request, int certificateProblem)
    {
        // Just accept.
        return true;
    }
}

Перед созданием веб-запроса я вставил строку.

ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();

Итак, есть ли какие-либо настройки или конфигурации с сайта Windows Azure, которые я могу попытаться принять по вызову https из показанного кода CE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...