Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 你能在WCF服务下运行WebBrowser吗?_C#_Wcf_Browser - Fatal编程技术网

C# 你能在WCF服务下运行WebBrowser吗?

C# 你能在WCF服务下运行WebBrowser吗?,c#,wcf,browser,C#,Wcf,Browser,我目前正在尝试将屏幕抓取程序(c#forms应用程序)转移到WCF服务 屏幕抓取程序使用WebBrowser从几个没有API的页面抓取信息。我想知道您是否可以在服务中运行WebBrowser,更不用说表单了。我目前正在开发XP,将在Server2003上发布 目前,在运行单元测试时,我只能看到WebBrowser,如果它是在“单元测试”端制作的,即使这样,我也需要手动弹出消息框,以使WebBrowser停止在空白屏幕上导航 由于存在多线程问题,程序正在移动和拆分。您最好使用无头浏览器,如Phan

我目前正在尝试将屏幕抓取程序(c#forms应用程序)转移到WCF服务

屏幕抓取程序使用WebBrowser从几个没有API的页面抓取信息。我想知道您是否可以在服务中运行WebBrowser,更不用说表单了。我目前正在开发XP,将在Server2003上发布

目前,在运行单元测试时,我只能看到WebBrowser,如果它是在“单元测试”端制作的,即使这样,我也需要手动弹出消息框,以使WebBrowser停止在空白屏幕上导航


由于存在多线程问题,程序正在移动和拆分。

您最好使用无头浏览器,如Phantom.js:。它提供了重要的功能,并且可以像常规命令行程序一样在任何需要的地方执行。

考虑到这一点,请意识到WebBrowser控件的每个实例实际上都是Internet Explorer的一个实例。然后,您的问题变成让一个服务启动Internet Explorer的多个实例

但Internet Explorer是一种交互式应用程序。它希望在有焦点时控制键盘和鼠标

  • 在服务器中运行时,您希望它控制哪个键盘和鼠标
  • 您的服务器有多少键盘和鼠标

您可以找到某种方式让服务启动远程桌面连接并启动Windows窗体应用程序。然后,您可以让Windows窗体应用程序承载一个WCF服务,这两个服务可以相互通信。我曾经看到过这样的事情,当需要自动化一个无法生成服务的专用交互程序时。

您所描述的(即在Windows服务中运行IE)基本上不受支持,原因有几个,其中包括安全问题。。。如果您真的想从Windows服务中执行此操作,请使用“无头”浏览器引擎。。。如果这是一个选项,我可以提供一些链接等IE引擎不是设计为服务运行-请不要。此外,如果原因是“存在多线程问题”,那么通过使其成为一种比桌面应用程序更容易同时启动更多线程的服务,就不太可能出现更少的问题…Yahia-我正在尝试做一些类似的事情,通过web服务从网站上删除要返回的屏幕信息。如果你有使用无头浏览器的经验,你能推荐一个吗?这可能是一个愚蠢的问题:为什么你不喜欢使用
WebClient
类?@EbenRoux:可能是因为在Windows窗体应用程序中,WebBrowser控件在处理脚本等方面做得更好,因为它实际上是IE。