支持单个用户数据文件夹下的多个配置文件

使用 WebView2 多配置文件 API,可以创建和操作用户配置文件以使用 WebView2 控件。 WebView2 中的配置文件在概念上类似于 Microsoft Edge 中的配置文件。 通过多配置文件支持,WebView2 应用可以在单个用户数据文件夹下拥有多个配置文件。

每个配置文件都有一个用于保存浏览器数据的专用配置文件文件夹,该文件夹为每个用户提供单独的浏览数据存储,例如 Cookie、用户首选项设置和缓存资源。 与同一用户配置文件关联的所有 WebView2 控件共享单个配置文件文件夹。

上一种方法:为每个 WebView2 控件使用不同的用户数据文件夹

以前,在没有多配置文件支持的情况下,为了实现数据分离,WebView2 应用可以将不同的用户数据文件夹用于不同的 WebView2 控件。 但是,在这种方法中,必须运行多个 WebView2 运行时实例, (每个实例包括一个浏览器进程和一组子进程) ,这些实例会消耗更多的系统资源,包括内存、CPU 占用量和磁盘空间。

创建 WebView2 时指定配置文件

创建定义配置文件的 options 对象

上的 CreateCoreWebView2ControllerOptionsCoreWebView2Environment 方法创建一个 options 对象 , CoreWebView2ControllerOptions以提供有关配置文件的特定信息,包括 ProfileNameIsInPrivateModeEnabled。 创建 WebView2 控件实例时,使用此对象指定目标配置文件。

创建使用配置文件的 WebView2 控件

采用options参数的每个方法都会Create...Controller创建一个 WebView2 控件,并将其与指定的配置文件相关联。 如果指定的配置文件不存在,将创建新的配置文件。

创建 WebView2 时指定配置文件的示例

public async void CreateWebView2Controller(object sender, RoutedEventArgs e)
{
    var hwnd = new HwndForWV2();
    Window window = new Window();
    window.Content = hwnd;
    window.Show();

    var env = await CoreWebView2Environment.CreateAsync();
    var options = env.CreateCoreWebView2ControllerOptions();
    options.ProfileName = "MyProfile";
    options.IsInPrivateModeEnabled = true;
    var controller = await env.CreateCoreWebView2ControllerAsync(hwnd.Handle, options);

    controller.Bounds = new System.Drawing.Rectangle(0, 0, 800, 600);
    controller.CoreWebView2.Navigate("https://www.bing.com/");
    controller.CoreWebView2.NavigationStarting += CoreWebView_NavigationStarting;
}

访问和操作配置文件

可以通过访问 Profile WebView2 控件的 属性来获取配置文件对象。

获取配置文件对象后,可以对其进行操作。 使用 CoreWebView2Profile 获取配置文件信息并执行配置文件范围的设置和操作。

访问和操作配置文件的示例

string profileName = controller.CoreWebView2.Profile.ProfileName;
bool inPrivate = controller.CoreWebView2.Profile.IsInPrivateModeEnabled;

// update window title with profileName
UpdateAppTitle(profileName);

// update window icon
SetAppIcon(inPrivate);

另请参阅