WebBrowser与WebBrowserBase类

时间:2012-11-17 18:17:13

标签: c# asp.net browser webbrowser-control iwebbrowser2

在我引用非.net内置(替代品)之前

我想了解

内置的.Net类可以提供使用:

WebBrowser& WebBrowserBase课程

我想知道的是:这两者之间有什么区别?

正如msdn在后一篇文章中所述 - WebBrowserBase -

“此API支持.NET Framework基础结构,并且不能直接在您的代码中使用

问题始于一个简单的任务:从网站检索文件(datasource xml)。 声音简单?所以你可以使用任何方法...,最好是最简单的方法。资源有效率。

场景是:相同的源(单一的可靠)最近通过使用cookie来阻止自动流量,因为我可以使用与主浏览器相同的资源(在我的情况下是IE9)。

....经过我的研究,使用WebBrowser“引擎”作为文件检索器......

将完美地完成工作。

您可以使用任何(不仅仅是Microsoft IE)

关于我可以访问的其他测试:

http://seleniumhq.org/docs/03_webdriver.html

+

https://code.google.com/p/selenium/downloads/list

1 个答案:

答案 0 :(得分:6)

您的问题

  

情况是,相同的来源(单一来源可靠)最近通过使用cookies

来阻止自动流量

好吧,如果这是你的问题(cookies)为什么不尝试这个网络客户端?

public class CookieWebClient : WebClient
{
    private readonly CookieContainer _cookies = new CookieContainer();

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        HttpWebRequest webRequest = request as HttpWebRequest;
        if (webRequest != null)
        {
            webRequest.CookieContainer = _cookies;
        }
        return request;
    }
}

WebBrowser与WebBrowserBase

对于WebBrowser和WebBrowserBase之间的区别,WebBrowser继承WebBrowserBase以扩展它并使其成为一个功能齐全的Web浏览器。 WebBrowserBase派上用场的地方在于,如果您希望自定义WebBrowser超出支持范围,您可以覆盖内容并使用WebBrowserBase来扩展功能等。作为一项规则,除非你绝对必须,否则你应该坚持只使用普通的WebBrowser控件 - 并且只有当你正在渲染网页或者想用它来虚伪地执行javascript时。

关于一般扩展WebBrowser的评论

我个人为webbrowser发现的最有用的修改之一就是暴露了下载标志,因此您可以控制webbrowser是否下载图像等。这里有一个很好的例子:https://stackoverflow.com/a/7738174/184746