UWP拦截Webview请求并添加标头

UWP拦截Webview请求并添加标头,uwp,winrt-xaml,uwp-xaml,Uwp,Winrt Xaml,Uwp Xaml,我在UWP webview中导航到一个url,该页面在内部进行许多http调用。我正在通过WebResourceRequested事件拦截这些呼叫。我在头中添加了auth令牌,在这样做的时候,我得到了“一个被封送到不同线程的接口调用的应用程序”,试图在当前UI的调度程序中运行,但我仍然面临这个问题。请帮我做这个 private async void Wb_WebResourceRequested(WebView sender, WebViewWebResourceRequestedEventA

我在UWP webview中导航到一个url,该页面在内部进行许多http调用。我正在通过WebResourceRequested事件拦截这些呼叫。我在头中添加了auth令牌,在这样做的时候,我得到了“一个被封送到不同线程的接口调用的应用程序”,试图在当前UI的调度程序中运行,但我仍然面临这个问题。请帮我做这个

 private async void Wb_WebResourceRequested(WebView sender, WebViewWebResourceRequestedEventArgs args)
    {
        //_ = this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
        //{

            try
            {
                string host = args.Request.RequestUri.Host;
                string uri = args.Request.RequestUri.AbsoluteUri;

                    try
                    {
                        var reqMsg = args.Request;
                        reqMsg.Headers.Authorization = new Windows.Web.Http.Headers.HttpCredentialsHeaderValue("Bearer", _AuthToken);
                        var response = await client.SendRequestAsync(reqMsg).AsTask();
                        args.Response = response;

                        Debug.WriteLine(uri + " res code : " + response.StatusCode);
                    }
                    catch (Exception e)
                    {
                        Debug.WriteLine(uri + " error msg : " + e.Message);
                    }

            }
            catch (Exception e)
            {
            }
        //});

    }

根据测试,设置
args.Response
时不能处于异步环境中

请换

var response=wait client.SendRequestAsync(reqMsg.AsTask();
致:

var response=client.SendRequestAsync(reqMsg).AsTask().Result;

是否有可能像他们在.Result side effects@richard中提到的那样出现死锁同步方法确实冻结了UI,但如果必须使用
WebResourceRequested
,则无法在事件回调中执行异步操作我们是否有其他替代方法。一般来说,
WebResourceRequested
事件将侦听某些脚本或资源的加载。加载这些资源通常不需要修改请求头。但如果情况特殊,您可以考虑在 JavaScript < /C>中向资源请求添加请求头,而不是通过<代码> WebVIEW拦截请求。如果在导航到页面时使用请求标头,请使用