从本机 ActiveX 控件获取 IWebBrowser2 失败。

落日赌城 2015-11-10 12:03:44
需要在WebFrom中实现一个网页抓取功能,里面用到了System.Windows.Forms.WebBrowser控件,功能已经实现,用VS IISExpress运行没问题,可以取到数据。但一部署到IIS上就出问题了,请各位大神帮忙指导一下,谢谢!
核心代码

static System.Windows.Forms.WebBrowser wb;

private static string url ="http://www.baidu.com";


private static List<MyCount> myCounts = new List<MyCount>();

[STAThread]
protected void Page_Load(object sender, EventArgs e)
{
try
{
System.Threading.Thread t = new System.Threading.Thread(new ThreadStart(() =>
{
wb = new System.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 (Exception exception)
{
Response.Write(exception.Message);
}
}

void wb_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
myCounts = new List<MyCount>();
if (wb.ReadyState == WebBrowserReadyState.Complete && wb.IsBusy == false)
{
HtmlDocument doc = wb.Document; //抓取网页
HtmlElement hem = doc.GetElementById("list");//这里就像js里面一样通过ID来查找对象

for (int i = 0; i < hem.Children.Count; i++)
{
string innertext = hem.Children[i].InnerText.Trim();
string[] temps = innertext.Split(' ');

myCounts.Add(new MyCount() { Name = temps[0], Number = temps[1] });
}
}
else
{
Response.Write(wb.ReadyState.ToString());
}
}

错误:
...全文
500 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
will(威尔) 2016-08-22
  • 打赏
  • 举报
回复
请问博主你这个问题后来解决了吗,我现在也遇到了这个问题。从本机 ActiveX 控件获取 IWebBrowser2 失败,,想问问你后来怎么解决的啊?
小菜来袭 2015-11-24
  • 打赏
  • 举报
回复
ie的话要设置下 Active插件 工具--Internet选项 --安全--自定义--将ActiveX控件和插件 下面都设置为允许或者是提示
落日赌城 2015-11-11
  • 打赏
  • 举报
回复
引用 1 楼 u011954277 的回复:
设置iis权限问题
怎么设置?设置成什么?
小菜来袭 2015-11-10
  • 打赏
  • 举报
回复
设置iis权限问题

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧