[英]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.