我正尝试在CefSharp.OffScreen(41.0.0)
服务应用程序中使用WCF包,但在尝试从Visual Studio2013运行该服务时遇到以下错误:
无法加载文件或程序集“CefSharp.BrowserSubprocess.Core.DLL”或其依赖项之一。无法找到指定的模块。
说明:当前web请求执行过程中发生未处理异常。请查看堆栈跟踪,以了解有关错误的更多信息以及错误在代码中的来源。
异常详细信息: System.IO.FileNotFoundException:无法加载文件或程序集'CefSharp.BrowserSubprocess.Core.DLL‘或其依赖项之一。无法找到指定的模块。
提到的程序集存在于项目的bin文件夹中,以及CefSharp's Website上列出的所有必需程序集中。如果实际上需要另一个程序集,我还没有弄清楚它是什么。
值得一提的是:
引用时,我尝试了SO avail.
CefSharp
here,to no
发布于 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。
发布于 2016-01-20 08:01:19
根据this link的说法,这个问题的解决方案似乎是在STAThread线程中运行CefSharp代码。
https://stackoverflow.com/questions/31440569
复制相似问题