2015-07-15 20 views
18

Próbuję użyć CefSharp.OffScreen(41.0.0) Nuget Pakietu w WCF usług aplikacyjnych, a ja otrzymuję następujący błąd podczas próby uruchomienia usługi z Visual Studio 2013:Jak korzystać z CefSharp w usłudze WCF?

Nie można załadować pliku lub zestawu „CefSharp .BrowserSubprocess.Core.DLL " lub jedną z jego zależności. Określony moduł nie został znaleziony.

Opis: Nieobsługiwany wyjątek wystąpił podczas wykonywania bieżącego żądania WWW. Zapoznaj się ze śledzeniem stosu, aby uzyskać więcej informacji o błędzie i miejscu jego powstania w kodzie.

Szczegóły wyjątku: System.IO.FileNotFoundException: Nie można załadować pliku lub zestawu „CefSharp.BrowserSubprocess.Core.DLL” lub jeden z jego zależności. Określony moduł nie został znaleziony.

Wymieniony zespół znajduje się w folderze bin projektu, a także we wszystkich wymaganych zespołach wymienionych na CefSharp's Website. Jeśli w rzeczywistości potrzebny jest inny zestaw, to nie wiem, co to jest.

Kilka innych punktów warto wspomnieć:

  • Jest to łatwe do odtworzenia: start z "WCF Application Service" szablon VS2013 jest po prostu dodał CefSharp.Offscreen Nuget Package.
  • Buduję projekt w x86.
  • CefSharp zależy również od redystrybucji Visual Studio C++ 2012. Skopiowałem te pliki do folderu bin, ale nadal otrzymuję ten sam błąd.
  • Próbowałem rozwiązania w pytaniu SO here, bezskutecznie.
  • CefSharp działa poprawnie, gdy jest przywoływane z aplikacji konsoli lub aplikacji WPF .
+0

Cef.Initialize() ma parametr performDependencyCheck. Czy zwraca błąd? – amaitland

+0

Do projektu nie dodano jeszcze kodu (innego niż ten, który jest zawarty w szablonie aplikacji usługi WCF). Dodałem tylko odniesienia CefSharp poprzez pakiet nuget CefSharp.Offscreen. – Galen

+0

Jeśli porównujesz odniesienia do projektu, są one takie same, jak w przypadku aplikacji konsolowej? Powinny być tylko 'CefSharp',' CefSharp.Core' i 'CefSharp.OffScreen'? Nie powinno być odniesienia do 'BrowserSubProcess', jest tworzone, gdy twoja aplikacja działa, to nie jest zależność. – amaitland

Odpowiedz

3

kilka punktów,

IIS nie mogą uzyskać dostęp do pulpitu

Więc nie można uruchomić wszystko, co potrzebuje pulpicie. Aplikacja Console i WPF ma dostęp do pulpitu i nazywane są procesami interaktywnymi użytkownika.

CEF musi pulpitowi

Cef trzeba menedżer okien do tworzenia okna, bez którego nie można renderować strony. Jest to powód, dla którego błąd jest mylący, ponieważ IIS nie może załadować zależnych zespołów, które wymagają interakcji pulpitu, chyba że wybrano opcję Allow service to interact with Desktop dla procesu IIS w usługach systemu Windows.

aplikacja konsoli jest tylko opcja login

Trzeba będzie uruchomić aplikację jako konsoli i trzeba będzie zalogować się do komputera, umożliwiając IIS interakcję z pulpitu nie jest dobrym rozwiązaniem i I don” nawet wiedzieć, jakie problemy mogą mieć.

Możesz ustawić swój serwer tak, aby automatycznie logował się do niektórych użytkowników, modyfikując rejestr i ustawiając aplikację konsoli w swoim starcie. W ten sposób za każdym razem, gdy serwer zostanie zrestartowany, twój serwer automatycznie zaloguje się do określonego użytkownika i uruchomi się konsola. (Windows 8.1 ma małe trudności, ale dostaniesz jakieś rozwiązanie).

Niestandardowe usługi systemu Windows z Desktop Access

Można zmienić typ aplikacji do usługi Windows zamiast konsoli i można zainstalować usługę Windows, który umożliwia dostęp do pulpitu pokazane w tym artykule, uwaga, istnieją problemy że to zadziała tylko wtedy, gdy ktoś jest zalogowany na serwerze.

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

PhantomJS bezgłowy przeglądarka

Jest PhantomJS przeglądarka bezgłowy który można uruchomić w IIS/usługi Windows bez konieczności interakcji z pulpitem, jednak trzeba będzie przesunąć swój kod JavaScriptu zamiast z C#. Istnieją również inne biblioteki do zarządzania PhantomJS z twojej aplikacji.

+0

Czy CefSharp.Offscreen nadal wymaga dostępu do pulpitu? Myślałem, że to nie tworzy żadnych okien. Popraw mnie, jeśli się mylę. – Galen

+0

Czy usługa IIS, do której się odwołujesz, nazywa się "Usługa aktywacji procesów systemu Windows". Nie widzę żadnych usług zawierających usługi IIS w ich nazwie. – Galen

+0

Uważam, że jest to serwis internetowy, a nawet jeśli jest napisane CefSharp.Offscreen, to po prostu nie wyświetla okna, ale potrzebuje komputera, ponieważ myślę, że system Windows nie załaduje odpowiednich potrzebnych bibliotek GUI. Nie jestem pewien, ale przyjrzę się później. –

0

Zgodnie z this link wydaje się, że rozwiązaniem tego problemu jest uruchomienie kodu CefSharp w wątku [STAThread].

Powiązane problemy