Пользовательский 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