Suporta vários perfis em uma única pasta de dados do usuário

A API de Perfis Múltiplos do WebView2 permite criar e manipular perfis de usuário para trabalhar com seus controles WebView2. Os perfis no WebView2 são conceitualmente semelhantes aos perfis no Microsoft Edge. O suporte a vários perfis permite que um aplicativo WebView2 tenha vários perfis em uma única pasta de dados do usuário.

Cada perfil tem uma pasta de perfil dedicada para salvar dados do navegador, que fornece armazenamento de dados de navegação separado para cada usuário, como cookies, configurações de preferência do usuário e recursos em cache. Todos os controles WebView2 associados ao mesmo perfil de usuário compartilham uma única pasta de perfil.

Abordagem anterior: Usando uma pasta de dados do usuário diferente para cada controle WebView2

Anteriormente, sem suporte a vários perfis, para obter a separação de dados, um aplicativo WebView2 poderia usar diferentes pastas de dados do usuário para diferentes controles WebView2. No entanto, nessa abordagem, você deve executar várias instâncias de tempo de execução do WebView2 (cada uma incluindo um processo do navegador e um monte de processos filho), que consumiram mais recursos do sistema, incluindo memória, espaço ocupado pela CPU e espaço em disco.

Especifique o perfil ao criar um WebView2

Criar um objeto de opções que define um perfil

O CreateCoreWebView2ControllerOptions método cria CoreWebView2Environment um objeto options, CoreWebView2ControllerOptions, para fornecer informações específicas sobre um perfil, incluindo ProfileName e IsInPrivateModeEnabled. Use esse objeto para especificar o perfil de destino ao criar uma instância de controle WebView2.

Criar um controle WebView2 que usa o perfil

Cada Create...Controller método que usa um options parâmetro cria um controle WebView2 e o associa ao perfil especificado. Se o perfil especificado não existir, um novo perfil será criado.

Exemplo de especificação do perfil ao criar um 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;
}

Acessar e manipular o perfil

Você pode obter o objeto de perfil acessando a Profile propriedade de um controle WebView2.

Depois de obter o objeto de perfil, você pode manipulá-lo. Use CoreWebView2Profile para obter informações de perfil e fazer configurações e operações em todo o perfil.

Exemplo de acesso e manipulação do perfil

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

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

// update window icon
SetAppIcon(inPrivate);

Confira também