为什么在调用通过AddWebAllowedObject添加的对象时,WebView.InvokeScriptAsync会抛出异常0x80020101?

时间:2017-08-12 01:44:00

标签: webview uwp

我有一个UWP应用程序,我在我的解决方案中的Windows运行时组件项目中定义了以下类:

[AllowForWeb]
public sealed class WebViewCallback
{
    public string Cookie { get; set; }

    public void reportCookie(string cookie)
    {
        Cookie = cookie;
    }
}

从我的主应用程序程序集中,我有一个WebView(导航到某个URL),我在其中执行以下操作:

private async void MyWebView_FrameDOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{    
    var callback = new WebViewCallback();
    MyWebView.AddWebAllowedObject("WebViewCallback", callback);

    await MyWebView.InvokeScriptAsync("eval", new[] { "WebViewCallback.reportCookie(document.cookie);" });
}

抛出0x80020101(SCRIPT_E_REPORTED),表明JS引擎无法找到(或不允许调用)我的回调对象。

我怀疑我在某种程度上没有满足MSDN中记录的AddWebAllowedObject的要求:

  

必须从a导入传入AddWebAllowedObject的对象   与运行组件分开的Windows运行时组件。这个   必须为AllowForWeb属性标识属性   由WebView安全子系统。如果您使用应用中的课程   项目,AddWebAllowedObject不起作用。

我的Windows运行时组件程序集可能需要做些什么吗?我只是将它添加到我的解决方案中,就像我对任何C#程序集一样。

我正在使用VS2017和Win10 Creators Update。

0 个答案:

没有答案