问题描述
需要在WebFrom中实现一个网页抓取功能,里面用到了System.Windows.Forms.WebBrowser控件,功能已经实现,用VSIISExpress运行没问题,可以取到数据。但一部署到IIS上就出问题了,请各位大神帮忙指导一下,谢谢!核心代码staticSystem.Windows.Forms.WebBrowserwb;privatestaticstringurl="http://www.baidu.com";privatestaticList<MyCount>myCounts=newList<MyCount>();[STAThread]protectedvoidPage_Load(objectsender,EventArgse){try{System.Threading.Threadt=newSystem.Threading.Thread(newThreadStart(()=>{wb=newSystem.Windows.Forms.WebBrowser();wb.DocumentCompleted+=wb_DocumentCompleted;wb.Navigate(url);while(wb.ReadyState!=System.Windows.Forms.WebBrowserReadyState.Complete){System.Windows.Forms.Application.DoEvents();//避免假死,若去掉则可能无法触发DocumentCompleted事件。}}));t.SetApartmentState(ApartmentState.STA);t.Start();}catch(Exceptionexception){Response.Write(exception.Message);}}voidwb_DocumentCompleted(objectsender,System.Windows.Forms.WebBrowserDocumentCompletedEventArgse){myCounts=newList<MyCount>();if(wb.ReadyState==WebBrowserReadyState.Complete&&wb.IsBusy==false){HtmlDocumentdoc=wb.Document;//抓取网页HtmlElementhem=doc.GetElementById("list");//这里就像js里面一样通过ID来查找对象for(inti=0;i<hem.Children.Count;i++){stringinnertext=hem.Children[i].InnerText.Trim();string[]temps=innertext.Split('');myCounts.Add(newMyCount(){Name=temps[0],Number=temps[1]});}}else{Response.Write(wb.ReadyState.ToString());}}
错误:
解决方案
解决方案二:
设置iis权限问题
解决方案三:
引用1楼u011954277的回复:
设置iis权限问题
怎么设置?设置成什么?
解决方案四:
ie的话要设置下Active插件工具--Internet选项--安全--自定义--将ActiveX控件和插件下面都设置为允许或者是提示