如何在WCF服务中使用CefSharp?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

我正尝试CefSharp.OffScreen(41.0.0)在WCF服务应用程序中使用Nuget包,并在尝试从Visual Studio 2013运行服务时遇到以下错误:

Could not load file or assembly 'CefSharp.BrowserSubprocess.Core.DLL' or one of its dependencies. The specified module could not be found.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'CefSharp.BrowserSubprocess.Core.DLL' or one of its dependencies. The specified module could not be found.

所提到的程序集存在于项目的bin文件夹以及CefSharp网站上列出的所有必需的程序集中。如果事实上有另一个程序集,我还没有弄清楚它是什么。

其他几点值得一提:

  • 它很容易重现:从VS2013的“WCF服务应用程序”模板开始,只需添加CefSharp.Offscreen Nuget包。
  • 我使用x86构建项目。
  • CefSharp还依赖于Visual Studio C ++ 2012可再发行组件。我将这些文件复制到bin文件夹中,但仍然出现相同的错误。
  • CefSharp 从控制台应用程序或WPF应用程序引用时工作良好。
提问于
用户回答回答于
用户回答回答于

IIS无法访问桌面

所以你不能运行任何需要桌面的东西。控制台和WPF应用程序可以访问桌面,并称为用户交互式进程。

CEF需要桌面

首席执行官需要窗口管理器来创建窗口,没有它,它不能呈现页面。这就是原因,错误在这里是误导性的,因为IIS不能加载需要桌面交互的相关程序集,除非Allow service to interact with Desktop在Windows服务中为IIS进程选择。

控制台应用程序仅适用于登录

将不得不将应用程序作为控制台运行,并且需要登录到桌面,从而允许IIS与桌面进行交互不是一个好的选择,我甚至不知道它可能会出现什么样的问题。

可以将服务器设置为通过修改注册表并在启动时设置控制台应用程序来自动登录某个用户。因此,每当服务器重新启动时,您的服务器将自动登录到指定的用户,控制台应用程序将启动。(Windows 8.1有一点困难,但你会得到一些解决方案)。

使用桌面访问定制Windows服务

可以将应用程序类型更改为Windows服务而不是控制台,并且可以安装允许访问本文中显示的桌面的Windows服务,请注意,只有当某人登录到服务器时才会出现问题。

http://www.codeproject.com/Articles/4891/Interact-With-Desktop-when-Installing-Windows-Serv

PhantomJS无头浏览器

有PhantomJS无头浏览器,可以在IIS / Windows服务中运行而无需与桌面交互,但是需要将代码转换为JavaScript而不是C#。还有其他库可以从应用程序管理PhantomJS。

扫码关注云+社区