首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WCF服务中使用CefSharp?

如何在WCF服务中使用CefSharp?
EN

Stack Overflow用户
提问于 2015-07-16 04:37:13
回答 2查看 2K关注 0票数 19

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

无法加载文件或程序集“CefSharp.BrowserSubprocess.Core.DLL”或其依赖项之一。无法找到指定的模块。

说明:当前web请求执行过程中发生未处理异常。请查看堆栈跟踪,以了解有关错误的更多信息以及错误在代码中的来源。

异常详细信息: System.IO.FileNotFoundException:无法加载文件或程序集'CefSharp.BrowserSubprocess.Core.DLL‘或其依赖项之一。无法找到指定的模块。

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

值得一提的是:

  • 很容易重现:从VS2013的"WCF服务应用“模板开始,只需添加CefSharp.Offscreen Nuget包。
  • I在x86中构建项目。
  • CefSharp还依赖于Visual Studio C++ 2012可再发行组件。我将这些文件复制到bin文件夹中,但仍然收到相同的错误。当从控制台应用程序或WPF Application.

引用时,我尝试了SO avail.

  • CefSharp here,to no

  • here中的解决方案。
EN

回答 2

Stack Overflow用户

发布于 2015-07-27 15:25:41

几个点,

IIS无法访问桌面

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

CEF需要桌面

Cef将需要窗口管理器来创建窗口,如果没有窗口管理器,它无法呈现页面。这就是原因,这里的错误是误导性的,因为除非在Windows Services中为IIS进程选择Allow service to interact with Desktop,否则IIS无法加载需要桌面交互的依赖程序集。

控制台应用程序是登录的唯一选项

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

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

使用桌面访问的自定义窗口服务

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

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

PhantomJS headless browser

有一个PhantomJS headless浏览器,你可以在IIS/Windows Service中运行,而不需要与桌面交互,但是你需要将你的代码转移到JavaScript而不是C#。还有其他的库可以从你的应用程序中管理PhantomJS。

票数 4
EN

Stack Overflow用户

发布于 2016-01-20 08:01:19

根据this link的说法,这个问题的解决方案似乎是在STAThread线程中运行CefSharp代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31440569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档