C# 从WebView中清除所有Cookie

C# 从WebView中清除所有Cookie,c#,cookies,webview,uwp,C#,Cookies,Webview,Uwp,我目前正在使用UWP为Windows Phone 10开发一个应用程序,在这个应用程序中,我需要一个WebView,在这个过程中可以设置几个cookie。WebView可以被实例化很多次,我注意到Cookie在多次实例化时都不会被清除,这使得我的工作流有点困难(例如,用户必须使用WebView登录,然后在重新实例化时,旧状态会出现) 我已经试着使用了现在有用。更糟糕的是,我事先不知道与Cookie关联的域,因此我不能这样做: HttpBaseProtocolFilter myFilter = n

我目前正在使用UWP为Windows Phone 10开发一个应用程序,在这个应用程序中,我需要一个WebView,在这个过程中可以设置几个cookie。WebView可以被实例化很多次,我注意到Cookie在多次实例化时都不会被清除,这使得我的工作流有点困难(例如,用户必须使用WebView登录,然后在重新实例化时,旧状态会出现)

我已经试着使用了现在有用。更糟糕的是,我事先不知道与Cookie关联的域,因此我不能这样做:

HttpBaseProtocolFilter myFilter = new HttpBaseProtocolFilter();
HttpCookieManager cookieManager = myFilter.CookieManager;
HttpCookieCollection myCookieJar = cookieManager.GetCookies(new Uri("https://url.com"));
foreach (HttpCookie cookie in myCookieJar)
{
cookieManager.DeleteCookie(cookie);
}
API中是否有任何东西可以帮助我清除WebView的所有cookie,或者至少获取它们的列表,以便我可以在每个cookie上使用
DeleteCookie

更糟糕的是,我事先不知道与Cookie关联的域,因此我不能这样做:

HttpBaseProtocolFilter myFilter = new HttpBaseProtocolFilter();
HttpCookieManager cookieManager = myFilter.CookieManager;
HttpCookieCollection myCookieJar = cookieManager.GetCookies(new Uri("https://url.com"));
foreach (HttpCookie cookie in myCookieJar)
{
cookieManager.DeleteCookie(cookie);
}
顺便说一句,除此之外,没有其他方法可以清除缓存数据。但是,您提供的代码片段可以清除cookie。对于您所考虑的不事先知道cookie的域,您可以通过事件句柄的<代码> WebViewNavigationStartingEventArgs < /代码>获得当前导航Uri。比如说,

private void WebViewControl2_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
    Uri gotouri = args.Uri;
    HttpBaseProtocolFilter myFilter = new HttpBaseProtocolFilter();
    HttpCookieManager cookieManager = myFilter.CookieManager;
    HttpCookieCollection myCookieJar = cookieManager.GetCookies(gotouri);
    foreach (HttpCookie cookie in myCookieJar)
    {
        cookieManager.DeleteCookie(cookie);
    }
}
这将清除当前Uri的cookies。但这将在每次
WebView
导航时清除cookie。您可能需要设置一个标志,以确保
WebView
是否为新实例,具体取决于您的应用程序逻辑


另外,在为Windows 10编译的应用程序中,使用Microsoft Edge渲染引擎显示HTML内容。清除当前
WebView
实例的cookies也可能会清除其他cookies,这与您在有新实例时发现cookies仍然存在一样。

谢谢!我想到了类似的事情:只需保留所有访问URL的“历史记录”,然后在需要时,循环浏览并删除cookies,但我正在寻找一种“更干净”的解决方案(例如,它也会处理第三方cookies)。