Xamarin.Forms android WebView пусто для отсутствия действительного сертификата SSL (среда разработки) - PullRequest
0 голосов
/ 19 марта 2020

В моей локальной среде разработки P C у меня есть проект dotnetcore 2.2, работающий через порт 5000 как https и 5001 как http. Мне нужно использовать https в моей среде разработки. С моего P C я могу войти через https://localhost: 5000 / без каких-либо ошибок (VS установить SSL-сертификат localhost). Используя мой P C IP https://192.168.0.2: 5000 , браузер запускает ошибку сертификата SSL (сертификат SSL предназначен для localhost). Я разрабатываю Xamarin.Forms 4.5.0.396 для Android (уровень 9.0API 28) и iOS и использую стандартный элемент управления WebView.

В Android при навигации ( webView.Source) до http://192.168.0.2: 5001 , это работает, но когда я пытаюсь https://192.168.0.2: 5000 , webView остается пустым. Исключений нет, но событие Navigated запущено. Я пробую несколько способов, подобных представленным в:

ClientCertRequestHandler не знает и не знает сборку для ссылки

Кроме того, я знаю, что это не решение, но я реализовал пользовательский рендерер (https://docs.microsoft.com/es-es/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview), чтобы попытаться переопределить метод проверки SSL, но он не работает.

Есть предложения?

1 Ответ

0 голосов
/ 31 марта 2020

Решение состоит в том, чтобы переопределить метод OnReceivedSslError в классе JavaScript WebClient, например:

    public class JavascriptWebViewClient : WebViewClient
{
    string _javascript;

    public JavascriptWebViewClient(string javascript)
    {
        _javascript = javascript;
    }

    public override void OnReceivedSslError(Android.Webkit.WebView view, SslErrorHandler handler, Android.Net.Http.SslError error)
    {
        //base.OnReceivedSslError(view, handler, error);
        handler.Proceed();
    }

    public override void OnPageFinished(Android.Webkit.WebView view, string url)
    {
        base.OnPageFinished(view, url);
        view.EvaluateJavascript(_javascript, null);
    }
}

Проблема заключается в том, что при добавлении OnReceivedSllError у меня есть две ошибки MAX_PATH ... Не знаю почему, но перестройка или очистка решения не сработали.

Я несколько раз чистил раствор, переместился ближе всего к папке root. Очистить и перестроить без запуска, затем запуск работает для меня, но остановка точки останова для этого метода не выполняется.

Это действительно очень странное поведение в Xamarin.Forms 4.5.0.396, но после обновления до Xamarin.Forms 4.5.0.495 работает и останавливается на точке останова

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