#c# #asp.net #winforms #microsoft-edge #webview2
Вопрос:
Namespace: Microsoft.Web.WebView2.WinForms
Assembly: Microsoft.Web.WebView2.WinForms.dll
Package: Microsoft.Web.WebView2 v1.0.902.49
Назначение некоторого пути к локальной папке для создания среды webView2
string userDataFolder = Path.GetTempPath() @"NETWebView2UserDataTest";
CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions();
async void InitwebView()
{
CoreWebView2Environment env = CoreWebView2Environment.CreateAsync("", userDataFolder, options).GetAwaiter().GetResult();
await webView.EnsureCoreWebView2Async(env);
webView.CoreWebView2InitializationCompleted = WebView_CoreWebView2Ready;
}
private void WebView_CoreWebView2Ready(object sender, EventArgs e)
{
webView.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
webView.CoreWebView2.WebResourceRequested = CoreWebView2_WebResourceRequested;
}
Он переходит по URL-адресу, но заголовки не настраиваются для запроса
private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
{
// Set and access the header
e.Request.Headers.SetHeader("test","username")
webView.CoreWebView2.Navigate(webView.Source.ToString());
}
Комментарии:
1. Когда вы звоните
webView.CoreWebView2.Navigate
, вы создаете новый запрос, а не используете тот, который вы только что изменили.2. Могу я узнать, есть ли у вас возможность проверить мой ответ? Я рад помочь, если у вас есть еще какие-либо вопросы.
Ответ №1:
Согласно той части кода, которую вы предоставили, я думаю, что вы установили свойство источника для элемента WebView2
управления, и @Poul Bak уже упомянул причину вашей проблемы.
В этом случае вы можете попытаться задать атрибуты и значение для заголовка в событии NavigationCompleted.
Простой тест(тест с помощью Google):
async void InitwebView()
{
await webView.EnsureCoreWebView2Async(default);
webView.Source = new Uri("https://www.google.com/");
webView.NavigationCompleted = WebView2Control_CoreWebView2Ready;
}
private void WebView2Control_CoreWebView2Ready(object sender, EventArgs e)
{
webView.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
webView.CoreWebView2.WebResourceRequested = CoreWebView2_WebResourceRequested;
}
private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
{
e.Request.Headers.SetHeader("test", "username");
//webView.CoreWebView2.Navigate(webView.CoreWebView2.Source);
}