C# WebBrowser与WebBrowserBase类

C# WebBrowser与WebBrowserBase类,c#,asp.net,browser,webbrowser-control,iwebbrowser2,C#,Asp.net,Browser,Webbrowser Control,Iwebbrowser2,在我引用非.net内置(备选方案)之前 我想知道 内置的.Net类可以提供使用: WebBrowser和WebBrowserBase类 我想知道的是:这两者有什么区别? 正如msdn在后面的一篇文章中所指出的那样——WebBrowserBase- “此API支持.NET Framework基础架构,不打算直接从代码中使用” 问题从一个简单的任务开始:从网站检索文件(数据源xml)。 听起来简单吗?所以你们可以使用任何一种方法,最好是最简单、最节省资源的方法 但是 场景是:同一个源(要可靠,只有一

在我引用非.net内置(备选方案)之前

我想知道

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

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

正如msdn在后面的一篇文章中所指出的那样——WebBrowserBase-

“此API支持.NET Framework基础架构,不打算直接从代码中使用”

问题从一个简单的任务开始:从网站检索文件(数据源xml)。 听起来简单吗?所以你们可以使用任何一种方法,最好是最简单、最节省资源的方法

但是

场景是:同一个源(要可靠,只有一个)最近通过使用cookie阻止了自动通信,因为我知道WebClient使用的是与您的主浏览器相同的资源(在我的例子中是IE9)

…在我做了一项研究之后,使用WebBrowser“引擎”作为文件检索器

我会把工作做好的

你可以使用任何(不仅仅是微软IE)

关于我进行的其他测试,您可以访问:

+

你的问题 场景是,同一个源(单个源是可靠的)最近通过使用cookie阻止了自动通信`

好吧,如果这是你的问题(cookies),为什么不试试这个web客户端呢

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;
    }
}
网络浏览器vs网络浏览器数据库 至于WebBrowser和WebBrowserBase之间的区别,WebBrowser继承了WebBrowserBase对其进行扩展,使其成为一个功能齐全的web浏览器。WebBrowserBase的用武之地在于,如果您希望自定义WebBrowser,使其超出所支持的范围—您可以覆盖这些内容,并使用WebBrowserBase来扩展功能等。通常,除非您必须这样做,否则您应该坚持只使用普通的WebBrowser控件——并且只有在您呈现网页或希望使用它来恶意执行javascript时才使用

关于扩展WebBrowser的一般评论
我个人发现的对webbrowser最有用的修改之一是公开下载标志,因此您可以控制webbrowser是否下载图像等。下面是一个很好的示例:

请将整个问题改写为两行或三行,因为这是不可读的,并且包含很多不相关的文本和换行符。WebClient/WebRequest到底有什么问题(因为它们支持cookies),WebBrowser有什么问题(为什么要使用基类或其他?@CodeCaster小于此值?问题是如何使用
WebBrowser数据库
,与使用子类型相比,您能从中获得什么好处:
WebBrowser
谢谢!!我是否只需要使用:
CookieWebClient cwc=new CookieWebClient()
然后
cwc.DownloadFile(“www…currency.xml”,“G:\Temp.xml”)
。就这些吗?您的受保护覆盖-
GetWebRequest
不被触摸?(因为它已经在
webclient
?)上发挥了神奇的作用),所以如果我像上面那样使用类,站点将检查它找不到的cookie?(因为当我使用standart webClient时,它会暴露我的cookie,因此源站点会通过特殊的javascript cookie技巧隐藏xml节点。以上评论中的代码是我应该如何使用你的类的吗?或者你可以…举个例子,你能试着给出一个例子,说明你如何在
WebBrowserBase
(选择任何不存在的基本属性或更好的东西,我可以将其作为示例添加到如何创建派生(和现有)中不支持的自定义行为中)
WebBrowser
或者您可以只使用
WebBrowser
本身并覆盖其一些属性,就像您的示例中使用WebClient时一样,并且仍然不必压缩其原型
WebBrowserBase
),否则为什么selinium会提出自己的WebBrowser?我想做一些类似的事情(不是整个产品,只是一个简单的定制插件)如果
CookieWebClient
类不起作用,您需要提供更多关于正在发生的事情、网站正在做什么以及为什么它不起作用的信息。当我试图将它与
DownloadFile
一起使用时,首先对它进行了评论,尽管我确实不要求保存它,而是需要提取它并使用一个值(其中一个chilednodes),因此您的代码很好!!感谢您的帮助,尽管您的示例(有效!),但我仍然试图向您学习重写类的用法(从而实现您希望的自定义行为)由于WebClient很难理解,您能举个例子说明如何为WebBrowser添加任何功能吗?如果不是与
WebBrowser数据库混为一谈,而是与它的子数据库混为一谈,那就不要紧了。