UWP Webview不会从本地服务器执行导航

时间:2017-12-06 15:49:50

标签: c# wpf webview uwp httplistener

我有一个WPF服务器托盘应用程序,它为UWP应用程序的WebView提供本地html内容。为了正确计算Storyboard动画的时间,我需要尝试利用WebView.NavigationCompleted事件,但是从我的服务器应用程序加载内容时它不会触发。

经过一些故障排除后,我已将其缩小到我的服务器是问题所在。它不是html内容本身,因为如果我使用NavigateToString加载相同的页面,那么事件将会正常。如果定期导航到来自互联网的URI(例如https://google.com),那么事件也会触发。只有当从我的服务器获取html它没有触发时(除非我退出服务器,然后它会在10秒后触发)。我对HTTP知之甚少,不知道WebView没有收到会触发事件的内容。

客户端代码(UWP):

private UIElement MyUIElement;
private int AnimationDuration;
private WebView MyWebView;

public async void ChangeBackground(UIElement uIElement, int animationDuration)
{
    MyUIElement = uIElement;
    MyWebView = MyUIElement.GetChildOfType<WebView>();
    MyWebView.NavigationCompleted += WebView_NavigationCompleted;
    MyWebView.DOMContentLoaded += WebView_DOMContentLoaded;
    AnimationDuration = animationDuration;
    var hideAnimation = MyUIElement.Fade(0, AnimationDuration);
    hideAnimation.Completed += HideAnimation_Completed;
    await hideAnimation.StartAsync();
}
private void HideAnimation_Completed(object sender, AnimationSetCompletedEventArgs e)
{
    MyWebView.Navigate(myUriFromMyLocalServer);
}

private void WebView_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
    // this fires
}

private void WebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
   // this doesn't fire
}

服务器代码(WPF):

private void ResponseHtmlContent(HttpListenerContext context, string htmlFileStr)
{
    context.Response.ContentType = "text/html";
    byte[] byteArray = Encoding.ASCII.GetBytes(htmlFileStr);
    context.Response.OutputStream.Write(byteArray, 0, byteArray.Length);
    context.Response.StatusCode = (int)HttpStatusCode.OK;
    context.Response.KeepAlive = false;
    context.Response.OutputStream.Flush();
    context.Response.Close();
}

我尝试过不同的Flush,Close和Dispose变体,但似乎没有一个可以解决这个问题。

0 个答案:

没有答案