WebAssembly(wasm) в CefSharp по пользовательской схеме

Пользовательский SchemeHandler несовместим с WASM?

Я не могу сказать, не может ли мой обработчик схемы обрабатывать WASM или WASM не нравится мой обработчик схемы.

По сути, я написал собственный SchemeHandler в соответствии с ответом bartosz.baczek здесь: CefSharp custom SchemeHandler

Он хорошо работает для загрузки html, javascript и CSS. Он даже успешно предоставляет доступ к моей камере. Кажется, это не работает для WASM.

Веб-сборка хорошо работает в IIS, но не загружается файл для cefsharp. Следовательно, необходимая сторонняя библиотека не может быть загружена.

Это возможно? Мы пытаемся обойти развертывание библиотеки на веб-сервере. Обработчик пользовательских схем решает проблемы с использованием протокола «file://» и имеет другие преимущества.

Можно ли заставить wasm понимать пользовательский протокол без изменения его кода? Может быть, хромированный флаг?

Документация неоднозначна относительно того, поддерживается ли WASM CefSharp. Ссылки ведут прямо на Chromium.

Вот ошибки:

blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f:1 Fetch API не может загрузить customfileprotocol://blah/scandit-sdk/build/scandit-engine-sdk.wasm? v=4.3.0. Схема URL "customfileprotocol" не поддерживается.

blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f:1 TypeError: Failed to fetch в blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f: 1 в новом Promise() в blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f:1 в blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f:1 в новом Promise ( ) в S (blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f:1) в blob:customfileprotocol://c/098b5e97-58e4-44ee-b324-3e18fe5ac33f:1

Не удалось получить/создать экземпляр библиотеки Scandit SDK Engine в : Бла

ПРИМЕР КОДА

// SETTINGS AND REGISTRATION
 MySettings.JavascriptFlags = "--expose-wasm";


                MySettings.RegisterScheme(new CefCustomScheme {
                    SchemeName=CustomProtocolSchemeHandlerFactory.SchemeName,
                    SchemeHandlerFactory=new CustomProtocolSchemeHandlerFactory()


                });

// END SETTINGS

/// SCHEME HANDLER FACTORY

 public class CustomProtocolSchemeHandlerFactory : ISchemeHandlerFactory
    {
        public const string SchemeName = "customFileProtocol";

        public IResourceHandler Create(IBrowser browser, IFrame frame, string schemeName, IRequest request)
        {
            return new CustomProtocolSchemeHandler();
        }
    }
//// END SCHEME HANDLER FACTORY


/// PROCESS REQUEST ASYNC

 public override bool ProcessRequestAsync(IRequest request, ICallback callback)
        {
            var uri = new Uri(request.Url);
            //var fileName = uri.AbsolutePath;
            string fileName = uri.LocalPath;


            var requestedFilePath = "C:/" + fileName;

            /*   var isAccesToFilePermitted = IsRequestedPathInsideFolder(
                   new DirectoryInfo(requestedFilePath),
                   new DirectoryInfo(frontendFolderPath));*/

            // if (isAccesToFilePermitted && File.Exists(requestedFilePath))
            string bFileName = "";

            bFileName = requestedFilePath;

            if (File.Exists(bFileName))
            {
                byte[] bytes = File.ReadAllBytes(bFileName);
                Stream = new MemoryStream(bytes);


                var fileExtension = Path.GetExtension(bFileName);
                MimeType = GetMimeType(fileExtension);

                callback.Continue();

                return true;
            }

            callback.Dispose();

            return false;
        }


/// END PROCESS REQUEST ASYNC

person R. Romero    schedule 16.08.2019    source источник
comment
Какую версию ты используешь? Как вы зарегистрировали свою схему? Приведите пример кода.   -  person amaitland    schedule 16.08.2019
comment
@amaitland . Сделанный! Спасибо за интерес.   -  person R. Romero    schedule 16.08.2019
comment
@amaitland . Версия 73.1.130. x64, если это поможет.   -  person R. Romero    schedule 16.08.2019
comment
Ошибка предполагает, что он пытается сделать запрос на выборку, поддержка которого была добавлена ​​только в версии 75, выпущенной вчера. В качестве альтернативы вы можете зарегистрировать обработчик схемы для встроенной схемы https, в которой уже должна быть включена выборка, я бы посоветовал вам установить cefsharp.github.io/api/73.1.x/html/, поэтому вы получаете запросы только для заданного домена.   -  person amaitland    schedule 16.08.2019
comment
Если вы решили обновиться, включите выборку с помощью cefsharp.github.io/api. /75.1.x/html/   -  person amaitland    schedule 16.08.2019
comment
@amaitland. Обновление устранило ошибки загрузки wasm. Спасибо! Попытка ввести доменное имя при регистрации схемы открывает html-страницу с пустым тегом ‹body›. Я сейчас изучаю этот вопрос.   -  person R. Romero    schedule 20.08.2019