打包应用程序时,WinRT和UWP WebView localhost URL不会触发

男孩我真的很挣这个!

所以我有一个WinRT Metro应用程序,它将HTML网页嵌入到应用程序中的webview中。 在HTML页面中有一个div与一个本地主机URL的href。 我正在使用此localhost调用与正在本地主机端口上侦听此URL的.NET桌面应用程序进行通信。

当我在Visual Studio(2015,更新1或2)中构建应用程序(作为调试或发布)时,应用程序按预期工作。 我可以点击div,触发url,通信成功。

但是,当我打包应用程序并将其侧载到我的机器上时,该function无法按预期工作。 我可以点击div …但是url永远不会被解雇。

HTML Url示例([…] =代码已删除):

Click here 

Codebehind导航到HTML示例:

 this.webView.Navigate(new Uri("ms-appdata:///local/index.html")); 

XAML Webview实例化:

  

以下是我尝试过的事情:

  1. 我创建了一个包含webview和嵌入式HTML页面的WinRT应用程序。 function在构建时有效,但在打包时无效。
  2. 我创建了一个包含webview和嵌入式HTML页面的UWP应用程序。 function在构建时有效,但在打包时无效。
  3. 我尝试使用此处所述的命令行在Visual Studio外部打包应用程序。 function不起作用。
  4. 我尝试使用不同版本的Visual Studio 2015.结果相同。
  5. 我尝试在不同的机器上进行构建/包装。 结果相同。
  6. 我试图导航到谷歌而不是本地主机。 作品。
  7. 我试图导航到另一个html文件而不是localhost。 作品。
  8. 当然,我尝试了很明显的事情,比如清理,更改包名,更改Visual Studio App Packager中的设置,重新启动,删除引用等。

有谁之前经历过这个吗? 这似乎是包装过程中的某种错误。 欢迎任何建议/提示/答案! 谢谢!

如果您想知道,此应用程序仅供我工作的公司内的企业使用,不会上传到Windowsapp store。

通常,您无法在UWP商店应用程序中打开环回连接。 完全停止。 如果您是侧载或在企业环境中,则有一种解决方法:

https://msdn.microsoft.com/en-us/library/windows/apps/dn640582.aspx

我有一个类似的问题,因为它值得分享我的经验。

我的应用程序是一个带有WebView控件的通用应用程序。 WebView源是应用程序包中的文件。 我在XAML中定义我的WebView如下。

  

在调试模式下,这非常有效。 在发布模式下的第一次运行中,它不会加载页面。 在发布模式应用程序的所有后续运行中,它完美运行。 这是一个可重复且令人难以置信的令人沮丧的错误。

我的解决方法很简单但很有效。 我使用计时器在一秒钟后设置webview的来源。 我在this.InitializeComponent();下添加以下行this.InitializeComponent();

 // this worksaround a bug: on first launch in release mode the webview doesn't load loadWebviewTimer = new Timer(loadWebview, null, 1000, Timeout.Infinite); 

然后另一个

 private async void loadWebview(object state) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { myWebview.Navigate(new Uri("ms-appx-web:///www/mylocalwebpage.html")); }); } 

这不是一个很好的修复,但它的工作原理。 有趣的是,mylocalwebpage.html里面有很多javascript; 我怀疑这与问题有关。