在我的应用程序中,用户将通过单击菜单打开多个选项卡。每个选项卡都是动态创建的,包含用于加载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 to
Menu3and try to open sub link to popup dialog then it gives
403禁止错误 - 拒绝访问`。它最初工作,但后来它只是给出了这个错误。
看起来,我需要清除WebBrowser Control
缓存或强制启动新会话。
任何人都可以指导我如何强制WebBrowser启动新会话或删除早期缓存?
有一个更好的选择。它使用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控件将忘记内存中的任何会话
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)