3

Boyこれで本当に苦労しています!WinRT&UWPアプリがパッケージ化されているときにWebViewのlocalhost urlが起動しない

私はアプリケーション内のWebviewに埋め込まれたHTML Webページを持つWinRT Metroアプリケーションを持っています。 HTMLページには、ローカルホストURLへのhrefを持つdivがあります。このlocalhost呼び出しを使用して、localhostポートでこのURLをリッスンしている.NETデスクトップアプリケーションと通信しています。

Visual Studio(2015、アップデート1または2)でアプリケーションを(デバッグまたはリリースとして)ビルドすると、アプリケーションは正常に動作します。私はdivをクリックすることができます、urlは解雇され、通信は成功です。

ただし、アプリケーションをパッケージ化してマシンに読み込むと、機能が期待通りに機能しません。私はdivをクリックすることができます...しかし、URLは解雇されることはありません。

HTMLのURL例([...] =コードを除去):HTML例にナビゲート

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

分離コード:

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

XAML WebViewのインスタンス化:

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

私は試したことがあります:

  1. 私はにのみwebviewと埋め込みHTMLページが含まれているWinRTアプリを作成しました。機能はビルド時に機能しますが、パッケージ化されていないと機能しません。
  2. にのみwebviewと埋め込みHTMLページが含まれているUWPアプリを作成しました。機能はビルド時に機能しますが、パッケージ化されていないと機能しません。
  3. 説明したようにコマンドラインを使用してVisual Studio以外のアプリをパッケージ化しようとしました。here.機能が動作しません。
  4. 異なるバージョンのVisual Studio 2015を使用しようとしました。同じ結果です。
  5. 私は別のマシンでビルド/パッケージ化を試みました。同じ結果。
  6. 私はlocalhostではなくgoogleに移動しようとしました。作品。
  7. 私はlocalhostではなく別のhtmlファイルに移動しようとしました。作品。
  8. 当然のことながら、私はなど、参照を削除、再起動します、Visual Studioのアプリケーションパッケージャの設定を変更、パッケージ名を変更

は、誰もがこの前に経験した、あまりにもクリーニングのような明白なものを試してみましたか?パッケージングプロセスに何らかの不具合があるようです。どんな提案/ヒント/答えも歓迎です!ありがとう!

あなたが疑問に思っている場合に備えて、このアプリケーションは私が働く会社内でのみ企業向けに使用されており、Windowsストアにはアップロードされません。

答えて

0

:あなたはサイドロード、またはエンタープライズ環境にいる場合は、回避策があります。

私のアプリは、WebViewコントロールを備えたユニバーサルアプリです。 WebViewソースは、アプリケーションパッケージ内のファイルです。私はWebViewをXAMLで以下のように定義します。

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

これは完全に機能します。リリースモードでの最初の実行では、ページはロードされません。それ以降のリリースモードでは完全に動作します。それは再現性があり、非常にイライラするバグです。

解決方法は簡単ですが効果的です。私はタイマーを使って1秒後にwebviewのSourceを設定します。私は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があります。私はこれが問題に関係していると思う。

関連する問題