Webview2 AddHostObjectToScript lanza una excepción lanzada en 0x7901179F.
Tengo una aplicación de prueba de WinUI 3 que utiliza WebView2 donde quiero poder llamar código C# desde el JavaScript alojado.
Siguiendo esta documentación, tengo lo siguiente:
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class Bridge
{
public string Func(string param)
{
return "Ejemplo: " + param;
}
}
...
await MyWebView.EnsureCoreWebView2Async();
MyWebView.CoreWebView2.SetVirtualHostNameToFolderMapping(
"appassets", "assets", CoreWebView2HostResourceAccessKind.Allow);
MyWebView.Source = new Uri("http://appassets/www/index.html");
MyWebView.CoreWebView2.OpenDevToolsWindow();
MyWebView.CoreWebView2.AddHostObjectToScript("bridge", new Bridge());
Sin embargo, la llamada a AddHostObjectToScript
me arroja el siguiente error:
> Excepción producida en 0x7901179F (Microsoft.Web.WebView2.Core.dll) en WinUI3_1.exe: 0xC0000005: Violación de acceso al leer la ubicación 0x00000000.
Actualización 1
Siguiendo la sugerencia de @Poul Bak, agregué mi llamada a NavigationCompleted
, pero desafortunadamente no ayudó.
También debo agregar que estoy utilizando VS2019, donde agregué el soporte de WinUI3 a través de las extensiones de administración, por lo que espero que mi error no se deba a esto.
davy.ai
El problema parece estar en la llamada a
AddHostObjectToScript
. Una posible solución es mover esta llamada al eventoNavigationCompleted
del controlWebView2
, de la siguiente manera:Esto asegura que el DOM de la página se haya cargado completamente antes de intentar agregar el objeto
Bridge
al script. Además, podría valer la pena verificar si el objetoBridge
está marcado correctamente como COM-visible, así como asegurarse de que el controlMyWebView
esté inicializado correctamente antes de realizar cualquier llamada a sus propiedades o métodos.