![](/img/trans.png)
[英]How do you use post to call a method from a WCF service and pass it an object?
[英]How do you use CefSharp in a WCF Service?
我正在尝试在 WCF 服务应用程序中使用CefSharp.OffScreen(41.0.0)
Nuget 包,并且在尝试从 Visual Studio 2013 运行该服务时出现以下错误:
无法加载文件或程序集“CefSharp.BrowserSubprocess.Core.DLL”或其依赖项之一。 指定的模块无法找到。
说明:在执行当前 Web 请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“CefSharp.BrowserSubprocess.Core.DLL”或其依赖项之一。 指定的模块无法找到。
提到的程序集存在于项目的 bin 文件夹中,以及CefSharp 网站上列出的所有必需程序集。 如果实际上需要另一个程序集,我还没有弄清楚它是什么。
还有几点值得一提:
CefSharp
工作正常。几点,
IIS 无法访问桌面
所以你不能运行任何需要桌面的东西。 您的控制台和 WPF 应用程序可以访问桌面并称为用户交互进程。
CEF 需要桌面
Cef 需要窗口管理器来创建窗口,没有它就不能渲染页面。 这就是原因,这里的错误具有误导性,因为 IIS 无法加载需要桌面交互的依赖程序集,除非在 Windows 服务中为 IIS 进程选择了Allow service to interact with Desktop
。
控制台应用程序是登录的唯一选项
您必须将应用程序作为控制台运行,并且需要登录到桌面,允许 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。
根据此链接,此问题的解决方案似乎是在 [STAThread] 线程中运行 CefSharp 代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.