如何解决此错误?
“请求的资源正在使用中。(HRESULT异常:0x800700AA)”。
使用C#.NET中的WebBrowser控件导航到其他网站时出现。为什么呢?
答案 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;