如何强制WebBrowser控件使用新会话或清除会话

问题描述 投票:3回答:2

在我的应用程序中,用户将通过单击菜单打开多个选项卡。每个选项卡都是动态创建的,包含用于加载URL的webbrowser控件。

每个URL指向同一个服务器,而某些URL没有访问权限,因此会收到Resource not have access错误。

现在,问题是,例如 - 如果用户直接点击加载了webbrowser URL的Menu3和相关标签,然后按照下一步,URL包含其他弹出链接,那么它可以工作并能够弹出URL。

现在,用户点击没有访问权限的Menu5,得到此错误Resource not have access(拒绝来自server). Its fine. NOw, again URL reach toMenu3and try to open sub link to popup dialog then it gives403禁止错误 - 拒绝访问`。它最初工作,但后来它只是给出了这个错误。

看起来,我需要清除WebBrowser Control缓存或强制启动新会话。

任何人都可以指导我如何强制WebBrowser启动新会话或删除早期缓存?

c# vb.net internet-explorer webbrowser-control browser-cache
2个回答
5
投票

有一个更好的选择。它使用WinINet.DLL并调用SetInternetOptions

[DllImport("wininet.dll", SetLastError = true)]
    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

    private const int INTERNET_OPTION_END_BROWSER_SESSION = 42;

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);

这将结束浏览器的会话缓存。调用此方法后,webbrowser控件将忘记内存中的任何会话


4
投票

WebBrowser控件的缓存与Internet Explorer相同。你有各种选择:

1)完全清除缓存(也将清除Internet Explorer!):

https://stackoverflow.com/a/24401521/2633161

2)在服务器响应中使用一些标签:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

3)使用随机查询字符串强制刷新:

WebBrowser1.Navigate('http://www.example.com/?refresh=' & Guid.NewGuid().ToString())

4)强制刷新页面(这将加载页面2次!):

WebBrowser1.Navigate('http://www.example.com/')
WebBrowser1.Refresh(WebBrowserRefreshOption.Completely)
© www.soinside.com 2019 - 2024. All rights reserved.