我正在导航到UWP Web视图中的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)
{
}
//});
}
答案 0 :(得分:1)
根据测试,设置args.Response
时不能处于异步环境。
请更改
var response = await client.SendRequestAsync(reqMsg).AsTask();
收件人:
var response = client.SendRequestAsync(reqMsg).AsTask().Result;
答案 1 :(得分:0)
如果您有更多来自网络视图的拨出电话,建议的解决方案可能会冻结UI