3

男孩我真的很苦惱這個!WinRT和UWP WebView localhost url在應用程序打包時不會觸發

因此,我有一個WinRT Metro應用程序,它將HTML網頁嵌入到應用程序的webview中。在HTML頁面中有一個帶有href的本地主機url。我正在使用本地主機調用來與在本地主機端口上偵聽此URL的.NET桌面應用程序進行通信。

當我在Visual Studio(2015,更新1或2)中構建應用程序(作爲調試或發行版)時,應用程序按預期工作。我可以點擊div,URL被解僱,通信成功。

但是,當我打包應用程序並將其加載到我的機器上時,功能無法按預期工作。我可以點擊div ...但url永遠不會被解僱。

HTML地址例([...] =代碼移除):

<a href="http://localhost:8123/?Api [...] >Click here</a> 

代碼隱藏導航到HTML示例:

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

XAML實例化網頁視圖:

<WebView x:Name="webView" Grid.Row="1" ScriptNotify="webView_ScriptNotify" Grid.Column="1" Visibility="Collapsed"/> 

以下是我試過的東西:

  1. 我創建了一個WinRT應用程序,只有包含webview和嵌入式HTML頁面。功能在建成時起作用,但在封裝時不起作用。
  2. 我創建了一個UWP應用程序,只有包含webview和嵌入的HTML頁面。功能在建成時起作用,但在封裝時不起作用。
  3. 我嘗試使用命令行打包在Visual Studio之外的應用程序here.該功能不起作用。
  4. 我試過使用不同版本的Visual Studio 2015.相同的結果。
  5. 我試過在不同的機器上建造/包裝。相同的結果。
  6. 我試圖導航到谷歌而不是本地主機。作品。
  7. 我試圖導航到另一個html文件,而不是本地主機。作品。
  8. 當然,我嘗試了明顯的事情太像清洗,換包的名稱,在Visual Studio應用程序打包更改設置後,重啓,刪除引用等

有沒有人經歷過這個?這似乎是包裝過程中的某種錯誤。歡迎任何建議/提示/答案!謝謝!

而且,萬一你想知道,這個應用程序僅適用於企業內部使用的公司,並且不會上傳到Windows應用商店。

回答

0

我不得不這樣非常相似的問題爲它是值得分享我的經驗。

我的應用程序是一個帶有WebView控件的通用應用程序。 WebView源代碼是應用程序包中的文件。我在XAML中定義了我的WebView,如下所示。

<WebView x:Name="myWebview" Source="ms-appx-web:///Assets/www/mylocalwebpage.html"/> 

在調試模式下,這可以很好地工作。在Release模式下的第一次運行中,它不加載頁面。在發佈模式應用程序的所有後續運行中,它都能完美運行。這是一個可重複和令人難以置信的令人沮喪的錯誤。

我的解決方法很簡單但有效。我使用計時器在一秒鐘後設置webview的來源。我添加以下線下方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;我懷疑這與問題有關。

相關問題