Estoy tratando de usar el CefSharp.OffScreen(41.0.0) dentro de una aplicación de servicio WCF y recibo el siguiente error al intentar ejecutar el servicio desde Visual Studio 2013:
No se pudo cargar el archivo o ensamblado 'CefSharp.BrowserSubprocess.Core.DLL' o una de sus dependencias. El módulo especificado no se pudo encontrar.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.IO.FileNotFoundException: no se pudo cargar el archivo o ensamblar 'CefSharp.BrowserSubprocess.Core.DLL' o una de sus dependencias. El módulo especificado no se pudo encontrar.
El ensamblaje mencionado está presente en la carpeta bin del proyecto, así como todos los ensamblajes necesarios enumerados en el sitio web de CefSharp . Si de hecho se requiere otro ensamblaje, no he descubierto cuál es.
Algunos otros puntos que vale la pena mencionar:
CefSharp funciona bien cuando se hace referencia desde una aplicación de consola o una aplicación WPF.pocos puntos,
IIS no puede acceder al escritorio
Por lo tanto, no puede ejecutar nada que necesite un escritorio. Su consola y la aplicación WPF tienen acceso al escritorio y se denominan procesos interactivos del usuario.
CEF necesita escritorio
Cef necesitará el administrador de ventanas para crear una ventana, sin la cual no puede mostrar la página. Esta es la razón por la que el error es engañoso aquí, ya que IIS no puede cargar ensamblajes dependientes que requieren interacción con el escritorio a menos que se seleccione Allow service to interact with Desktop para el proceso de IIS en los Servicios de Windows.
La aplicación de consola es la única opción con Iniciar sesión
Deberá ejecutar su aplicación como consola y deberá iniciar sesión en el escritorio, permitir que IIS interactúe con el escritorio no es una buena opción y ni siquiera sé qué tipo de problemas podría tener.
Puede configurar su servidor para que inicie sesión automáticamente con algún usuario modificando el registro y configurando su aplicación de consola en su inicio. Entonces, de esta manera, cada vez que se reinicie el servidor, su servidor iniciará sesión automáticamente con el usuario especificado y se iniciará su aplicación de consola. (Windows 8.1 tiene poca dificultad pero obtendrá alguna solución).
Servicio de Windows personalizado con acceso de escritorio
Puede cambiar su tipo de aplicación a Servicio de Windows en lugar de Consola y puede instalar su servicio de Windows que permite el acceso al escritorio que se muestra en este artículo, tenga cuidado, hay problemas de que esto funcionará solo si alguien está conectado al servidor.
http://www.codeproject.com/Articles/4891/Interact-With-Desktop-when-Installing-Windows-Serv
Navegador sin cabeza PhantomJS
Hay un navegador sin cabeza PhantomJS que puede ejecutar en el servicio IIS/Windows sin necesidad de interactuar con el escritorio; sin embargo, deberá cambiar su código a JavaScript en lugar de C#. También hay otras bibliotecas para administrar PhantomJS desde su aplicación.
Según este enlace , parece que la solución a este problema es ejecutar el código CefSharp en un subproceso [STAThread].