如何修复“请求的资源正在使用中。(HRESULT异常:0x800700AA)”

时间:2010-02-03 07:43:55

标签: c# .net webbrowser-control

如何解决此错误?

  

“请求的资源正在使用中。(HRESULT异常:0x800700AA)”。

使用C#.NET中的WebBrowser控件导航到其他网站时出现。为什么呢?

6 个答案:

答案 0 :(得分:12)

如果当前正在处理导航操作,或者当前打开控件的任何阻止对话框(包括上下文菜单,Javascript警报,NTLM登录对话框等),则WebBrowser控件被视为“正在使用”。您可以使用WebBrowser.IsBusy属性来检测这些状态。

如果由于当前未完成的导航操作,您可以尝试停止当前导航(如果确实要在页面未完成加载时停止)或将新导航添加到请求队列并使用计时器等待直到WebBrowser.IsBusy返回false。

如果繁忙状态是由一个或多个打开阻止对话框引起的,那么您可以执行相同的等待技术,并且可能Messagebox.Show()用户发出由于打开的对话窗口而导致挂起导航延迟的消息。

答案 1 :(得分:4)

我有同样的问题。调用WebBrowser.Stop()没有帮助,WebBrowser.IsBusy从未变为虚假。

事实证明,如果页面创建了任何类型的对话框alert()弹出窗口,javascript错误,NTLM登录弹出窗口等等。)您无法离开页面直到对话框关闭。

我的解决方案是阻止对话框首先显示。 Apparently阻止所有这些弹出窗口很简单;刚设置

webBrowser.ScriptErrorsSuppressed = true;

答案 2 :(得分:2)

bool go = false;
string SiteContent1 = string.Empty;
string SiteContent2 = string.Empty;
int index = 0;
WebBrowser wb = new  WebBrowser();

    void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {

        try
        {
            if (go)
            {
                SiteContent2 = wb.DocumentText;
                // Code to compare to contents of the webbrowser
                index++;
                go = false;
                steps = 1;
            }

            if (!go)
                {

                    if (index >= TotalSiteCount)
                    {
                        Stop();
                    }
                    else if (steps == 1)
                    {
                        wb.Navigate(UrltocompareList[index].Url1);

                    }
                    else if (steps == 2)
                    {
                        SiteContent1 = wb.DocumentText;
                        wb.Navigate(UrltocompareList[index].Url2);
                        go = true;
                    }
                    steps++;                        
                }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);

        }

    }

UrltocompareList是要比较的2个网站的集合。
TotalSiteCount是UrltocompareList中的项目数 这个表单继承IOleClientSite来删除媒体,如图像,视频和没有活动的X下载,以便在webbrowser控件中具有更快的渲染时间。

我使用此方法而不是system.net.webclient来获取网页的html然后比较它们。
当它遇到wb.Navigate方法时我遇到了这个错误。

答案 3 :(得分:1)

我在Windows 10中使用watin运行specflow测试时遇到的一个问题是win10默认使用MS Edge,所以我从未打开IE,当watin启动时,IE卡在使用默认设置的提示上。选择选项,关闭浏览器和运行测试再次为我工作。

只需观看

答案 4 :(得分:0)

这很容易解决。 当浏览器在执行操作时提交操作时,会发生此错误。 例如,当您在Web浏览器中右键单击时,您将导航到某个网站。 为了解决这个问题,我做了以下几点:

//if my webbrowser isn't performing any actions
if(!myWebBrowser.IsBusy)
{
   //Navigate
   myWebBrowser.Navigate("http://www.google.com");
}

答案 5 :(得分:0)

首先尝试

1- 请检查导航网址(如果您选中,请再次检查已编译的文件夹)

2-删除WebBrowser控件并添加新

我忘了复制原始文件App.Path +" \ error.html"并看到这个问题。

保证方法

我在VB6中修复此错误

添加WebBrowserControl wb(0)(名称wb,索引= 0)

以前导航

SELECT * FROM web_forums_threads WHERE fid = :postfid ORDER BY (SELECT date_created FROM web_forums_posts WHERE web_forum_posts.tid = web_forums_threads.tid) DESC;