es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WebView2 arroja una excepción de tiempo de espera durante la inicialización para algunos usuarios.

Mi inicialización de webview2 no funciona para un grupo de usuarios, pero para otros funciona correctamente. Lanza una excepción de tiempo de espera para algunos usuarios.
A continuación está mi código:

public async Task InitializeAsync()
{
    EnsureTemplate();
    Browser.NavigationStarting += Browser_NavigationStarting;
    Browser.NavigationCompleted += Browser_NavigationCompleted;
    Browser.PreviewKeyDown += Browser_PreviewKeyDown;
    Browser.CoreWebView2InitializationCompleted += Browser_CoreWebView2InitializationCompleted;
    var cachePath = WebUIConfigSection.Current.AbsoluteCachePath;
    var environment = await CoreWebView2Environment.CreateAsync(null, cachePath, null);
    await Browser.EnsureCoreWebView2Async(environment);
}

Detalles de la excepción:
Tipo: System.Runtime.InteropServices.COMException

Método de destino: Void ThrowExceptionForHRInternal(Int32, IntPtr)

Mensaje: Esta operación se ha devuelto porque el período de tiempo de espera ha expirado. (HRESULT: 0x800705B4)

Origen: mscorlib

Stacktrace:

vid System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
vid Microsoft.Web.WebView2.Core.CoreWebView2Environment.d__54.MoveNext()
vid System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
vid System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
vid Microsoft.Web.WebView2.Wpf.WebView2.<>c__DisplayClass27_0.<g__Init|0>d.MoveNext()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado y los detalles de la excepción, parece que el problema está relacionado con el proceso de inicialización de CoreWebView2. Específicamente, la operación está agotando el tiempo para algunos usuarios, lo que resulta en una excepción System.Runtime.InteropServices.COMException.

    Una posible solución a este problema podría ser aumentar el período de tiempo de espera para el proceso de inicialización. Esto se puede hacer pasando un objeto CoreWebView2EnvironmentOptions al método CoreWebView2Environment.CreateAsync con un valor de tiempo de espera más alto. Por ejemplo:

    var options = new CoreWebView2EnvironmentOptions() 
    {
        AdditionalBrowserArguments = "--disable-features=RendererCodeIntegrity",
        WebView2ExperimentalFeaturesEnabled = true,
        WaitForBrowserProcessExitTimeout = TimeSpan.FromSeconds(30)
    };
    
    var environment = await CoreWebView2Environment.CreateAsync(null, cachePath, options);
    

    En el código anterior, configuramos el valor WaitForBrowserProcessExitTimeout en 30 segundos, lo cual debería proporcionar suficiente tiempo para que el proceso de inicialización se complete para la mayoría de los usuarios.

    Otra posible solución podría ser investigar si existen factores ambientales que podrían estar causando el tiempo de espera en la inicialización para algunos usuarios. Por ejemplo, si los usuarios tienen conexiones lentas a Internet o hardware de baja especificación, esto podría afectar el proceso de inicialización y hacer que agote el tiempo. Al identificar estos factores, potencialmente podemos abordar el problema subyacente y mejorar la experiencia del usuario para los usuarios afectados.

Comments are closed.