如何使用Microsoft WebView2同时登录多个账户

4

我创建了一个带有Webview2控件的应用程序,并运行它,在我的网站上使用用户A登录,然后再次运行我的应用程序而不关闭之前的实例,并在同一网站上使用用户B登录,然后登录成功。当我检查之前的实例时,用户A仍然登录着。如何在一个实例应用程序中做到同样的效果?我尝试使用两个Webview2控件,但是当我使用用户B登录时,用户A被登出或会话被替换为用户B。


由于登录是通过cookie控制的,因此您可能只需要为不同的用户切换cookie。 - Mooshua
1个回答

5

WebVeiw2使用用户数据文件夹存储Cookies。

为了在不同的会话中启动另一个控件实例,您可以设置UserDataFolder 作为选项,例如:

private async void button1_Click(object sender, EventArgs e)
{
    webView21.CreationProperties =
        new Microsoft.Web.WebView2.WinForms.CoreWebView2CreationProperties();
    webView21.CreationProperties.UserDataFolder = System.IO.Path.Combine(
        Application.StartupPath, $"{Guid.NewGuid()}");
    await webView21.EnsureCoreWebView2Async();
    webView21.CoreWebView2.Navigate("https://outlook.com");
}

对于那些想要开始使用WebView2的人,你需要在你的计算机上安装WebView2运行时Microsoft Edge Chromium。你还需要在你的项目中安装WebView2 NuGet包。然后你就可以从这里开始:使用 WebView2 在 Windows Forms 中入门


我也使用了设计器来创建控件,并把代码放在 button1_Click 事件处理器中,它运行良好。 - Reza Aghaei
2
请注意,每次运行程序都会创建一个新的userdata文件夹,这不会自动删除。 - Poul Bak
@PoulBak 感谢您的提醒,既然我们自己设置了路径,那么我认为读者会明白如何处理路径以及保留或删除它。我还假设读者也会阅读答案中的第一个链接。 - Reza Aghaei
我有同样的问题,并且我同意PoulBak的观点。这个解决方案虽然有效,但内存一直在增长...总有一天你的驱动器会爆炸。 - Zimo
@Zimo,你应该根据自己的需求来处理这个问题。例如,你可以像隐身模式一样对待它,并在关闭应用程序时删除文件夹。 - Reza Aghaei
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接