Поделиться через


Поддержка нескольких профилей в одной папке данных пользователя

API нескольких профилей WebView2 позволяет создавать профили пользователей и управлять ими для работы с элементами управления WebView2. Профили в WebView2 концептуально похожи на профили в Microsoft Edge. Поддержка нескольких профилей позволяет приложению WebView2 иметь несколько профилей в одной папке данных пользователя.

Каждый профиль имеет выделенную папку профиля для сохранения данных браузера, которая предоставляет отдельное хранилище данных браузера для каждого пользователя, например файлы cookie, параметры предпочтений пользователя и кэшированные ресурсы. Все элементы управления WebView2, связанные с одним профилем пользователя, совместно используют одну папку профиля.

Предыдущий подход: использование другой папки данных пользователя для каждого элемента управления WebView2

Ранее без поддержки нескольких профилей для разделения данных приложение WebView2 могло использовать разные пользовательские папки данных для различных элементов управления WebView2. Однако при таком подходе необходимо запустить несколько экземпляров среды выполнения WebView2 (каждый из которых включает в себя процесс браузера и несколько дочерних процессов), которые потребляют больше системных ресурсов, включая память, объем ЦП и дисковое пространство.

Указание профиля при создании WebView2

Создание объекта options, определяющего профиль

Метод CreateCoreWebView2ControllerOptions в CoreWebView2Environment создает объект параметров , CoreWebView2ControllerOptionsчтобы предоставить конкретные сведения о профиле, включая ProfileName и IsInPrivateModeEnabled. Этот объект используется для указания целевого профиля при создании экземпляра элемента управления WebView2.

Создание элемента управления WebView2, использующего профиль

Каждый Create...Controller метод, принимаюющий options параметр, создает элемент управления 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);

См. также