0

I am running a client side blazor wpf hybrid with a BlazorWebView control. I need to hook into the result when I load into an iframe, technically it loads from disk a wasm that I need to inject some headers for. However, my WebView2_FetchRequestPaused event is not getting trigged at all. The setup for the event seems to work fine. Please, does anyone have any ideas how I can get it to trigger, or another way of injecting the headers. In the network of the chrome debugger pane I see loading from url's like "https://0.0.0.0/js/fieldItemsScripts.js" and I need to inject into the result of all calls to https://0.0.0.0/* and add some extra headers.

private async void OnCoreWebView2InitializationCompleted (object? sender, CoreWebView2InitializationCompletedEventArgs e)
 {
     if (sender != null && e.IsSuccess)
     {
         //(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);   // have to have a filter
         //(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.WebResourceRequested += WebView_WebResourceRequested;
         //(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.WebResourceResponseReceived += WebResourceResponseReceived;
         var receiver = (sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.GetDevToolsProtocolEventReceiver("Fetch.requestPaused");
         receiver.DevToolsProtocolEventReceived += WebView2_FetchRequestPaused;
         await (sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.CallDevToolsProtocolMethodAsync("Fetch.enable", "{}");
     }
 }
 private async void WebView2_FetchRequestPaused(object? sender, CoreWebView2DevToolsProtocolEventReceivedEventArgs e)
 {
     if (sender != null)
     {
         var doc = JsonDocument.Parse(e.ParameterObjectAsJson);
         var id = doc.RootElement.GetProperty("requestId");
         string type = doc.RootElement.GetProperty("resourceType").ToString();
         string method = doc.RootElement.GetProperty("request").GetProperty("method").ToString();
         string payload = "{\"requestId\":\"" + id + "\"}";
         if (doc.RootElement.TryGetProperty("headers", out JsonElement headers))
         {
             //
             Console.WriteLine(headers.ToString());
         }
         await MainWebView.WebView.CoreWebView2.CallDevToolsProtocolMethodAsync("Fetch.continueRequest", payload);
     }
 }

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.