2010-06-17 53 views
1

制作WCF Web服务时,在使用带有Webbrowser控件的方法时遇到了问题。该方法启动一个线程,并使用web浏览器控件填写一些表单并进一步点击,等待事件处理程序触发并返回我需要的答案。该方法经过测试并在自己的环境中工作,但在WCF Web服务环境中使用,事件处理程序不会触发。这样的结果是等待的manualresetevent没有结束。这是因为新线程还是因为Web服务的错误事件处理?如果是的话,什么是合理的解决方案?在WCF Web服务中使用线程和事件处理程序

+0

只需检查 - “WebBrowser”在*客户端*,是吗? – 2010-06-17 07:31:20

+0

Web应用程序使用Web服务。 Web服务需要自己的浏览器元素,并使用事件处理程序来填写并从其他站点获取信息。 因此:Browser1 - > Web App - > Web Service - >在其他站点上执行操作(新的浏览器 - >打开url - >填入URL - >按下ok - > catch response - >处理回答) - >返回网络服务的答案 – user368984 2010-06-17 08:23:59

+0

您最好使用'HttpWebRequest'或'WebClient',因为它们还可以让您执行同步请求。 – ErikHeemskerk 2010-06-18 04:33:26

回答

0

Browser1 - > Web应用程序 - > Web服务 - >像对其他网站(新浏览器操作 - >打开URL - > URL中填写 - >按确定 - >抓响应 - >处理答案)

如果您的系统中创建“新浏览器”的部分作为服务运行,或者作为Windows服务运行,自托管的WCF服务进程或IIS;那么很可能你不会得到GUI事件,因为没有GUI。除此之外,GUI事件处理程序还需要Windows消息泵,而这些消息在这些情况下不可用。

尝试托管您的服务,然后说一个Windows窗体主机来查看,我怀疑它会起作用。

如果您必须在IIS或Windows服务(非GUI)下使用您的系统,那么您可以始终与具有消息泵的代理主机进程进行通信,以便为您完成所有浏览内容。一旦完成你的“答案”可以发回到网络应用程序

相关问题